我对 Try-Catch 阻止有疑问。
以下是我的代码
private void PopulateDDL()
{
try
{
if (my condition)
{
code
}
else
{
throw new Exception(ErrorMessage);
}
}
catch (Exception ex)
{
logerror(ex);
}
}
如果以下代码出错,将执行哪个 Catch 块 其他
{
throw new Exception(ErrorMessage);
}
答案 0 :(得分:0)
来自MSDN:
抛出异常时,公共语言运行库(CLR)看起来如此 用于处理此异常的catch语句。如果是目前的 执行方法不包含这样的catch块,CLR查看 调用当前方法的方法,依此类推 堆。如果未找到catch块,则CLR显示未处理 向用户发出异常消息并停止执行程序。
您定义的catch块:
catch (Exception ex)
{
RaiseWebError(ex);
}
将首先执行异常throw new Exception(ErrorMessage);
如果RaiseWebError
重新抛出异常,那么这将由在调用堆栈中找到的下一个try-catch块处理(即您引用的父方法)。但是如果RaiseWebError
以某种方式处理异常(可能通过记录异常),则在第一次try-catch之后将继续执行。