首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异常捕获

异常捕获
EN

Stack Overflow用户
提问于 2010-08-24 18:36:39
回答 3查看 258关注 0票数 1

它们之间的区别是什么

代码语言:javascript
复制
 try
 {
     ... 
 }
 catch (NHibernate.ADOException exception)
 {}

代码语言:javascript
复制
try
{
    ... 
}
catch (exception ex)
{}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-24 18:40:01

在catch块中,您可以指定希望捕获哪些异常。所以如果你有

代码语言:javascript
复制
try {}
catch(Exception e){}

它将捕获从Exception类派生的所有异常(因此捕获所有异常)。如果您有:

代码语言:javascript
复制
try{}
catch (NHibernate.ADOException exception){}

它将只捕获属于或派生于ADOException的异常。因此,如果你得到一个ArgumentException,它将会通过,就好像没有尝试/捕捉。

票数 6
EN

Stack Overflow用户

发布于 2010-08-24 18:42:04

我猜你的意思是

代码语言:javascript
复制
catch (Exception ex) {}

使用第二个代码片段。

那么不同之处在于,第一个将只捕获一种特定类型的异常,即NHibernate.ADOException,而第二个将进入所有可能抛出的异常的catch块。

第二种通常是不好的做法,因为您声称可以处理所有可以想到的错误类型。但是,在最外层的作用域中,它可以作为任何已通过的异常的总括。

票数 1
EN

Stack Overflow用户

发布于 2010-08-24 18:43:20

强烈建议不要使用catch { Exception },因为这实际上隐藏了一个bug。在每个可能抛出异常的地方,只捕获预期的异常类型是必要的,即使这需要编写更多的代码行。当抛出意外异常时,程序必须崩溃,这是修复错误的唯一方法。

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

https://stackoverflow.com/questions/3555534

复制
相关文章

相似问题

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