我不想捕捉一些异常。我能以某种方式做到吗?
我可以这样说吗:
catch (Exception e BUT not CustomExceptionA)
{
}
?
我不想捕捉一些异常。我能以某种方式做到吗?
我可以这样说吗:
catch (Exception e BUT not CustomExceptionA)
{
}
?
try
{
// Explosive code
}
catch (CustomExceptionA){ throw; }
catch (Exception ex)
{
//classic error handling
}
try
{
}
catch (Exception ex)
{
if (ex is CustomExceptionA)
{
throw;
}
else
{
// handle
}
}
你可以过滤它:
if (e is CustomExceptionA) throw;
当然,您可以抓住它并重新抛出它:
try
{
}
catch (CustomExceptionA) { throw; }
catch (Exception ex) { ... }
首先,除非您记录并重新抛出异常,否则捕获异常是不好的做法。但如果必须,您需要捕获自定义异常并重新抛出它,如下所示:
try
{
}
catch (CustomExceptionA custome)
{
throw custome;
}
catch (Exception e)
{
// Do something that hopefully re-throw's e
}
在评论中接受@Servy 的教育后,我想到了一个解决方案,可以让你做你想做的[我认为的]。让我们创建一个如下所示的方法IgnoreExceptionsFor()
:
public void PreventExceptionsFor(Action actionToRun())
{
try
{
actionToRun();
}
catch
{}
}
然后可以这样调用:
try
{
//lots of other stuff
PreventExceptionsFor(() => MethodThatCausesTheExceptionYouWantToIgnore());
//other stuff
}
catch(Exception e)
{
//do whatever
}
这样,除了 with 的那一行之外的每一行PreventExceptionsFor()
都会正常抛出异常,而里面的那一行PreventExceptionsFor()
会被悄悄地通过。