Fre*_*mas 1 c# attributes exception
我有一个保证永远不会返回的功能.它记录数据并引发异常.
public int f()
{
... do stuff ...
if(condition)
BadUserData.Throw(... parameters...);
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到错误消息"并非所有代码路径都返回一个值.我可以通过非返回函数后的虚拟返回来解决这个问题,但我想知道是否有一个属性或者我可以应用于Throw函数的东西它表明它永远不会回来?我看了一眼,找不到一个.
Mar*_*ell 11
不,没有.实际上,为了获得最合适的调用堆栈,我会有更多类似于下面的内容,其中方法创建异常,但我们throw
在本地创建:
if(condition)
throw BadUserData.CreateSomeFormOfException(... parameters...);
Run Code Online (Sandbox Code Playgroud)
它一次解决了这两个问题.
另一种更懒惰的方法是:
if(condition) {
// throws <===== comments are important here ;p
BadUserData.Throw(... parameters...);
}
return 0;
Run Code Online (Sandbox Code Playgroud)
好吧而不是BadUserData.Throw
实际throw
:
public int f()
{
... do stuff ...
if(condition)
throw new Exception("... parameters...");
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
或者让此方法返回一个Exception,然后:
throw BadUserData(... parameters...);
Run Code Online (Sandbox Code Playgroud)
除此之外,不,没有任何属性或任何东西可以使您的代码编译.