作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这已被报告为 RSP-25603: "Exception.RaiseOuterException can cause wrong W1035 warning" .
给定以下(演示)函数F
,我已将异常引发语句更改为现在链异常:
--- before
+++ after
@@ -1,11 +1,11 @@
function F(X: NativeInt): NativeInt;
begin
try
Result := 1 div X;
except
on EDivByZero do
- {ECustom}Exception.Create('...');
+ Exception.RaiseOuterException({ECustom}Exception.Create('...'));
else
raise;
end;
end;
现在,
Ctrl-F9
发出警告
W1035 :
[dcc32 Warning]: W1035 Return value of function 'F' might be undefined
Exception.RaiseOuterException
作为
raise
操作它。
FAcquireInnerException: Boolean
对
Exception
是私有(private)的类,甚至不能设置为
True
在我可以继续直接提升的派生自定义类中(
raise ECustomException.Create
)。
{$Warn No_RetVal Off}
.我还能如何解决此警告?
最佳答案
我能想到的一种避免警告而不禁用警告的方法是改为执行以下操作:
function F(X: NativeInt): NativeInt;
begin
try
Result := 1 div X;
except
on E: Exception do
begin
if E is EDivByZero then
Exception.RaiseOuterException({ECustom}Exception.Create('...'));
raise;
end;
end;
end;
更新:如评论中所述,另一种方法是简单地定义一个在运行时实际未达到的返回值,例如:
function F(X: NativeInt): NativeInt;
begin
try
Result := 1 div X;
except
on E: EDivByZero do
begin
Exception.RaiseOuterException({ECustom}Exception.Create('...'));
Result := 0; // <-- just to keep the compiler happy
end;
end;
end;
关于delphi - Exception.RaiseOuterException 与 W1035 函数 '%s' 的返回值可能未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64834857/
这已被报告为 RSP-25603: "Exception.RaiseOuterException can cause wrong W1035 warning" . 给定以下(演示)函数F ,我已将异常
我是一名优秀的程序员,十分优秀!