首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在try catch块中引发异常

在try catch块中引发异常
EN

Stack Overflow用户
提问于 2010-07-21 03:34:00
回答 4查看 65.1K关注 0票数 27
代码语言:javascript
复制
try { 
  if (isFileDownloaded)
   // do stuff
  else
   throw new CustomException()
} 
catch (Exception e)
{
  // something went wrong to save the error to log
}
finally
{
  //release resources
}

我的问题是,catch会捕获在ApplicationException代码块中抛出的try吗?它的编码风格很差吗?

它应该用另一种方式写吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-21 03:37:24

catch将捕获您的异常(以及发生的任何其他异常)。话虽如此,我还是尽量避免写这样的代码。

就我个人而言,我看不出有什么理由对同一范围内抛出的异常进行异常处理(catch)。如果你可以在你的方法中处理你的错误--把异常处理(例如:日志记录)直接放在try块中。

在捕捉由try块中的方法抛出的异常时,使用catch更有用。这会更有用,例如,如果您的// do stuff节碰巧调用了引发异常的方法。

另外,我建议不要捕获每个异常(Exception e),而是捕获您可以正确处理的特定类型的异常。有一个例外是,如果你在catch中重新抛出异常,比如:将它用于日志记录,但仍然让它在调用堆栈中冒泡。

票数 32
EN

Stack Overflow用户

发布于 2010-07-21 03:36:56

是的,它将捕获ApplicationException,因为它是从Exception派生的。

在大多数情况下,处理基本异常应该很好,除非您需要记录或处理不同类型的异常...

代码语言:javascript
复制
try {
    if (isFileDownloaded)
       doSomeThings();
    else
       throw new ApplicationException("Something expectedly unexpected happened.");
}
catch(ApplicationException e)
{
   // log application exception here...
}
catch(Exception e)
{
   // log all other exceptions here...
}
finally
{
   // release resources...
}
票数 11
EN

Stack Overflow用户

发布于 2010-07-21 03:41:30

此外,仅供参考,ApplicationException作为派生自的例外从.NET 2.0开始就被弃用了。它从来没有打算自己抛出一个异常,所以你可能根本不应该使用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3293652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档