在处理异常时附加常规异常catch是一种好习惯。一个例子可以使这个问题更清楚
try{
// do something
}catch(spomespecificException1 ex){
//logging and other stuff
}catch(spomespecificException2 ex){
//logging and other stuff
}catch(Exception ex){
//logging and other stuff
}
我应该将异常catch附加到堆栈
答案 0 :(得分:7)
一般来说,你根本不应该抓住这些例外。不要捕捉你实际上不知道如何处理的异常。
“处理”意味着修复。如果您无法解决问题,或者无法添加其他信息,请不要捕获异常。
答案 1 :(得分:4)
这取决于具体情况以及您希望在被捕获之前让异常气泡达到多远。
当然有理由支持和反对,但没有针对您的情况的详细信息,这是不可能的。
那么,它有一个普遍的“规则”吗?号
答案 2 :(得分:1)
如果您想要执行与该异常相关的特定处理,那么您发布的代码很好 - 您可能希望在其他一个catch块中执行此操作。一个很好的例子可能是当您尝试连接到SQL数据库并且可以以不同方式处理不同的错误消息时。
另外,请记住,有一个“finally”块可以添加到最后来执行所有清理(和常见)处理代码,但是你不会在那里获得异常信息
答案 3 :(得分:0)
如果您访问应用程序之外的某些内容(如连接错误等),通常会发生异常。
如果你想过滤掉异常类型并为每种特定类型做些不同的事情,那么这样做就没有错。
更好的编码实践将首先防止这些例外情况发生。