我们有一个不寻常的案例,另一个try-catch块中的try-catch块。两个catch子句都捕获Exception类型的异常。在最内部的try-catch块中发生的错误被第一个为空的catch捕获,而不是移动到下一行,它被另一个catch捕获另一次。这是我以前从未见过的。我们的一位同事声称这是一些设置,但他不记得是什么样的环境。你知道为什么会发生这种情况以及如何“关闭它”吗? 请找到以下代码:
try {
//some code
try
{
//code that throws exception
}
catch (Exception)
{
}
//some other code, never reached
}
catch (Exception ex)
{
Logger.Write(ex.ToString());
return null;
}
答案 0 :(得分:2)
可能导致这种情况的一件事是你的第一个catch块也抛出异常。这将导致第二个被触发。
您的同事可能指的是Visual Studio的异常捕获功能,它允许您打破任何异常,包括已经处理的异常。您可以通过按CTRL + ALT + e或在Debug - >下列出的菜单中找到它。扩展...
如果这两种情况都不是,那么我们需要更多代码
答案 1 :(得分:0)
尝试清理//处理什么都不做,看看是否仍然发生如果是这样// //处理部分导致异常或抛出异常
答案 2 :(得分:0)
我有两个跟进:
这种情况是否仅发生在您的vs或其他人身上?
您是否正在运行异常阻止?也许您的异常处理块配置错误了?
答案 3 :(得分:-1)
您可以尝试使用finally块而不是在try-catch块之后编写“其他代码”