首页 > 解决方案 > 到底哪个类抛出异常?

问题描述

我有两种方法:

public void MethodOne() 
{

    try {
    MethodTwo();
    }
    catch (Exception ex) {
    Log.Message("Something went wrong);
    throw;
    }
}

public void MethodTwo()
{

    try {
    // Some logic that fails
    }
    catch (Exception ex) {
    throw ex;
    }
}

我从 MethodOne 调用 MethodTwo。如果在 MethodTwo 中抛出异常。程序会在异常处理后终止,还是会冒泡到 MethodOne 并在那里被捕获?

标签: c#exception

解决方案


异常将被捕获并重新抛出MethodTwo,然后再次捕获并重新抛出MethodOne

应用程序是否会终止取决于您调用的方式和位置,MethodOne以及您是否在调用时捕获异常,MethodOne或者在调用链中更进一步。

请注意,这会throw ex 重置堆栈跟踪,应避免使用。


推荐阅读