c# - 在方法中抛出异常会导致方法返回吗?

标签 c# exception methods return

我有以下代码:

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/

相关文章:

java - 调用类内部的方法

c# - 访问 IOption 类中 appsettings.json 文件中存储的键值对

c++ - 为什么抛出局部变量调用 moves 构造函数?

Java 将文件传递给方法错误?

ruby - 在 Ruby 中创建完整的异常对象

python - python中嵌套异常的嵌套原因

c# - 包含方法的数组

c# - DataGridView 缺少数据源为空的新行

c# - WPF - 从 PSD 文件创建 ProgressBar 模板

c# - 设计时的 Windows 应用商店应用 ResourceLoader