關(guān)于Java異常的疑問
問題描述
眾所周知下面的代碼編譯不過:
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; 必須對其進(jìn)行捕獲或聲明以便拋出。
但是下面的代碼沒有進(jìn)行錯(cuò)誤處理,卻能夠通過編譯:
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)
請問這是什么原因?
問題解答
回答1:StringIndexOutOfBoundsException繼承了RuntimeException,不需要顯式地聲明處理。
回答2:第一個(gè)拋出的是Exception是checked異常,也就是編譯器異常,所以必須手動(dòng)處理。第二個(gè)拋出的StringIndexOutOfBoundsException是unchecked異常,運(yùn)行時(shí)異常,所以不需要手動(dòng)處理
相關(guān)文章:
1. IOS app應(yīng)用軟件的id號(hào)怎么查詢?比如百度貼吧的app-id=4779278132. css - 一條線兩邊有短線的樣式表怎么寫?3. angular.js - ASP.NET Webform 中能使用 AngularJS 嗎?4. python 中如何自動(dòng)安裝第三方庫?5. css - 為什么我沒見到一個(gè)瀏覽器支持多重偽元素和嵌套偽元素?6. java - 同步/異步與阻塞/非阻塞之間的差異具體是什么?7. javascript - node.js中stat() access() open() readFile()都能判斷文件是否存在?8. node.js - nodejs中把熱request保存下來,使用JSON.stringify(req)報(bào)錯(cuò),請問怎么解決?9. .gitignore 如何僅忽略根目錄下的index.html10. css - 移動(dòng)端 盒子內(nèi)加overflow-y:scroll后 字體會(huì)變大
