我正在使用java,我的代码中的所有异常都是从java.lang.exception派生的。将所有东西都包含在一个try-catch中是一个好主意吗?为每个困难的函数添加try-catch是个好主意吗?
因为我想让我的代码以懒惰的方式运行得更好,这意味着没有异常会导致我的程序崩溃,例如,捕获IndexOutOfBoundsException,ArrayIndexOutOfBoundsException,SQLGrammarException ......
以下是我的代码:
public MyResult function1(){
MyResult myResult = new MyResult();
try{
//all codes here
}catch(Exception e){
LOGGER.error(e);
myResult.setException(e);
}finally{
return myResult;
}
}
//more same functions using same try-catch here
public MyResult functionN(){
MyResult myResult = new MyResult();
try{
//all codes here
}catch(Exception e){
LOGGER.error(e);
myResult.setException(e);
}finally{
return myResult;
}
}
答案 0 :(得分:6)
我的代码中的所有异常都来自
java.lang.Exception
这可能不是一个好主意,因为需要从java.lang.RuntimeException
定义一类异常 - 即表示编程错误的异常,即需要更改程序以便修复的情况
将所有内容都包含在一个try-catch中是否是一个好主意?
不,不是。您应该根据需要添加try
/ catch
,将它们放在可能抛出它们的代码块周围,并且仅在代码准备以某种有意义的方式处理异常的情况下。
为每个困难的函数添加try-catch是个好主意吗?
您不应将try
/ catch
放在不知道如何处理异常的方法中。更好的方法是让异常进入调用链,直到它遇到准备处理异常的方法。
在某些情况下,此类方法位于调用链的最顶层,在这种情况下,该方法通常会记录并退出或返回错误状态。
答案 1 :(得分:3)
因此。基本上,您应该将HORIZON_CONFIG = {
'customization_module': 'some_path.overrides',
}
/ class YourCreateImageForm(CreateImageForm):
...
form_class = project_forms.YourCreateImageForm
放在可能引发异常的代码部分周围。这将使您的代码更好地构建,并提高可读性。
就个人而言,我不是使用try
的忠实粉丝。如果其他人读取您的代码,他将不知道可能发生的异常。我认为只使用可能在catch
块中抛出的异常更好。