我有以下代码:
public static Point operator /(Point point, double value)
{
if (value == 0)
{
throw new DivideByZeroException("Cannot divide by zero");
return Point.Origin;
}
return new Point(point.X / value, point.Y / value, point.Z / value);
}
第一个返回语句 (return Point.Origin;
) 在 Visual Studio 中带有绿色下划线。当光标悬停在带下划线的文本上时,消息显示“检测到无法访问的代码”。这引出了我在标题行中提出的问题:
在方法中抛出异常会导致方法返回吗?
最佳答案
嗯,它会导致方法的执行退出,是的。异常被抛出堆栈,到最近的捕获它的方法。如果它不影响执行流程,那将毫无意义。
这与“正常”返回的方法不同——即没有异常。所以假设调用方法有:
Point foo = bar / baz;
Console.WriteLine("Done");
在这种情况下,如果除法运算符抛出异常,Console.WriteLine()
调用将不会 执行。相反,要么异常会在此方法中被捕获,要么异常会传播到该方法的调用者,等等。
(finally
block 也将在此过程中执行。)
可能值得阅读 MSDN 指南 "handling and throwing exceptions" .
关于c# - 在方法中抛出异常会导致方法返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323801/