这是我当前的异常处理代码。
请特别注意throw e;
标有的行***
。
try
{
//some code that could cause exception
}
catch (FaultException e) //first catch a particular type of exception only
{
if (Regex.IsMatch(e.Message, "something")) //satisfying a particular condition
{
Console.WriteLine("Particular exception occurred.");
return;
}
else
throw e; // <-- *** Problem! Not getting caught by the "catch" below.
}
catch (Exception e) //catch all other exceptions
{
Console.WriteLine("General exception ocurred");
return;
}
问题是这样的:如果throw e; // <-- ***
发生,它不会被 final 捕获catch
。相反,应用程序会崩溃,就好像没有处理异常一样。
如何以最简单的方式解决这个问题?
您在第一个catch
中看到我只对实际处理FaultException
满足特定条件的异常感兴趣,但将所有其他异常(FaultException
不满足条件的异常和FaultException
不满足条件的异常)留给 final catch
。不幸的是,这不能正常工作。
我在.NET 4上。