很多帖子告訴我try-catch太丑了 不要寫 要少寫! 但是不得不承認Java離不開try-catch
明確一下觀點:
1.對于錯誤進行異常處理是不負責任的(所謂錯誤即本不該發(fā)生,程序員卻讓它發(fā)生了 一般指:傳入空指針,數(shù)組越界,除數(shù)為零),這個時候用斷言或者什么也不做比較好。因為處理了之后問題依然存在,所以保證代碼正確性是解決這個問題的關(guān)鍵。
2.盡量明確異常類別,不要一個Exception全部包括。
性能分析:
'''
public class testOne {
@Test
public void test1() {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("0");
list.add("4");//省略很多測試數(shù)據(jù)
try {
for (String i: list) {
int num = Integer.parseInt(i);
num = 12 / num;
System.out.println(num);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void test2() {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("0");
list.add("4");//省略很多測試數(shù)據(jù)
for (String i: list) {
try {
int num = Integer.parseInt(i);
num = 12/num;
System.out.println(num);
} catch (Exception e) {
e.printStackTrace();
}
}
}
'''
結(jié)果:
test1:
java.lang.ArithmeticException: / by zero
at TryCatch.testOne.test1(testOne.java:24)
12-----
6-----
test2:
java.lang.ArithmeticException: / by zero
at TryCatch.testOne.test2(testOne.java:46)
12-----
6-----
3-----
效率:
不catch時:耗時是一樣的
出現(xiàn)異常時:根據(jù)需要的數(shù)據(jù)結(jié)果進行選擇
建議:盡量少在try中聲明變量,較少的代碼放置到try中 效率會更高