關(guān)于Java異常的疑問(wèn)
問(wèn)題描述
眾所周知下面的代碼編譯不過(guò):
public class test{ private static void haha(){throw new Exception(); } public static void main(String[] args) {haha();return; }}
javac test.java
未報(bào)告的異常錯(cuò)誤Exception; 必須對(duì)其進(jìn)行捕獲或聲明以便拋出。
但是下面的代碼沒(méi)有進(jìn)行錯(cuò)誤處理,卻能夠通過(guò)編譯:
public class test{ public static void main(String[] args) {String s = new String('test');System.out.println(s.substring(0,6));return; }}
javac test.javajava test
Exception in thread 'main' java.lang.StringIndexOutOfBoundsException: String index out of range: 6at java.lang.String.substring(Unknown Source)at test.main(test.java:4)
請(qǐng)問(wèn)這是什么原因?
問(wèn)題解答
回答1:StringIndexOutOfBoundsException繼承了RuntimeException,不需要顯式地聲明處理。
回答2:第一個(gè)拋出的是Exception是checked異常,也就是編譯器異常,所以必須手動(dòng)處理。第二個(gè)拋出的StringIndexOutOfBoundsException是unchecked異常,運(yùn)行時(shí)異常,所以不需要手動(dòng)處理
相關(guān)文章:
1. macOS Sierra 10.12 安裝mysql 5.7.1出現(xiàn)錯(cuò)誤2. mysql - 拖拽重排序后怎么插入數(shù)據(jù)庫(kù)?3. android - 安卓做前端,PHP做后臺(tái)服務(wù)器 有什么需要注意的?4. javascript - 天貓首頁(yè)首屏數(shù)據(jù)來(lái)源5. mysql 獲取時(shí)間函數(shù)unix_timestamp 問(wèn)題?6. mysql - 僅僅只是把單引號(hào)與反斜杠轉(zhuǎn)義不用prepare statement能否避免sql注入?7. php - 生產(chǎn)環(huán)境下,給MySQL添加索引,修改表結(jié)構(gòu)操作,如何才能讓線上業(yè)務(wù)不受影響?8. mysql主主同步,從庫(kù)不同步應(yīng)該怎么解決?9. mysql在限制條件下篩選某列數(shù)據(jù)相同的值10. 新入手layuiadmin,部署到tp中。想用php自已寫一個(gè)后臺(tái)管理系統(tǒng)。
