【发布时间】:2020-07-01 13:06:51
【问题描述】:
我有两种方法:
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 并在那里被捕获?
【问题讨论】:
-
为什么不直接用你的调试器试试呢?
-
为了澄清,MethodTwo 不处理异常,它抛出它。实际上它会抛出一个没有原始堆栈跟踪的新的。如果你调试,你会看到它冒泡,然后你进入 MethodOne 的 catch 块。
-
是什么阻止您按 F5 并尝试它?另外,如果应用程序在遇到第一个
throw时终止,您认为错误处理(例如日志记录)会发生什么情况? -
您可能会觉得这很有帮助:stackoverflow.com/questions/730250/…