对我个人来说(这并不意味着我是对的),包括try-catch语句在方法'重载'他们的内部结构为读者.使用DB时,您应该包括SQLExceptions,ConnectionExceptions等等.有没有办法将所有例外的责任放在某个对象上?
我想是这样的:
enum TaskEnum {
doSmth1, doSmth2, doSmth3, doSmth4
}
class OuterClass {
doWhatever(TaskEnum task, String… args) {
try {
switch(task) {
case (doSmth1): InnerClassInstance.execute1(args); break;
case (doSmth2): InnerClassInstance.execute2(args);break;
case (doSmth3): InnerClassInstance.execute3(args);break;
case (doSmth4): InnerClassInstance.execute4(args);break;
} catch(Exception e) {
e.printStack()}
}
}
}
class InnerClass {
execute1(String args) throws Exception() {bla-bla-bla};
execute2(String args)throws Exception() { bla-bla-bla };
execute3(String args)throws Exception() { bla-bla-bla };
execute4(String args)throws Exception() { bla-bla-bla };
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,外部类将负责所有内部类方法抛出的异常.当然,如果认为我的解决方案是好的,我不会问这个问题.这只是一个例子,让你理解这个想法.
请分享您对此的看法.
异常机制的优点在于它们发生的地方不必处理它们,而是在一个共同的地方,将处理许多可能的故障组合在一起.所以是的,肯定会推迟异常的处理,直到方便的时刻.有两个主要选择:
必须中止当前工作单元的故障:在包含整个事务范围的级别处理所有故障,并统一执行(通常是日志条目和上游客户端的错误消息);
例外情况仅表示工作单元内的替代程序流程:这些是检查异常的良好候选者,因为它们必须特别及早地处理.不要将它们记录在错误级别(它可能是警告或只是信息,具体取决于上下文).
遗憾的是,Java检查的异常使得第一个选项更难实现,因为路上的每个方法都必须声明它可能抛出的所有已检查异常.还有一些常见的陷阱:Eclipse和其他工具提供了使用样板文件try-catch来包围您的代码,而应该让异常向上传播.当您实现的方法没有声明您遇到的已检查异常时,会出现特别困难的情况,迫使您过早处理它.在这种情况下,必须将已检查的异常包装RuntimeException并重新抛出.这是非常明显的并且导致许多错误,或者至少重复的错误日志条目.
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |