dev*_*hog 7 .net c# exception-handling
这是星期一,我有一个关于C#基础知识的问题.如果方法抛出异常,方法的返回值会发生什么变化?
具体来说,当在方法中抛出异常并且对返回值产生什么影响时,"引擎盖下"会发生什么?在这种情况下,如何在内部计算回报值?
假设有两种情况:一种是返回值是类型int而另一种是类型object.是否default(T)会发生异常时被内部调用?在这种情况下,我应该考虑类型的返回值int是零而对象的返回值是null?
Cro*_*ono 10
简短而过于简化的答案是它不会返回任何东西.代码在发生异常的任何地方"中断"并且在堆栈中向下移动直到有东西捕获它.
即使你不正好赶上例外,变量你试图用方法的返回值初始化将保持这是什么方法调用之前:
var i = 5;
try
{
i = MyMethodThatThrowsAnException();
}
catch
{
// at this point, the i variable still equals 5.
}
Run Code Online (Sandbox Code Playgroud)
我应该提一下,如果它抛出异常,你真的不应该担心函数的返回值.如果你这样做,那么你可能做错了,就像使用异常作为流控制一样.