Java之try-catch和throws的區別
try-catch和throws的區別:
try-catch : 在當前位置處理異常
throws : (語法格式: 在方法簽名之後:throws 異常型別)
向上丟擲異常,可以無限向上丟擲,直到拋給main方法,main方法就拋給JVM虛擬機器去解決
即比如在3個類中,第3個類出現異常,可向上拋給第二個類,第二個類如果不想解決,可繼續拋給第一個類中去解決,然後在第一個類中(呼叫第三個類中方法會出現異常)==》就使用try-catch解決異常
相當於throws可以向上指定拋到某一個類裡面去集合解決異常(使用try-catch解決異常),而try-catch是直接處理異常
注意:throws後可以同時丟擲多個異常型別 ex:public void 方法名() throws ArithmeticException,NumberFormatException{}
throws 原理:有throws的方法的是所有程式碼中 , 某行程式碼建立了異常物件,直接去跟throws後的異常型別匹配,如果匹配不上,則自動匹配下一個,匹配上為止。
i: 如果能匹配上則向上丟擲成功,由呼叫方法的地方來處理
ii: 如果所有的都匹配不上,則丟擲失敗,由jvm預設處理
ex:
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
getResult();
System.out.println("try......");
} catch (ArithmeticException e) {
// TODO: handle exception
System.out.println("catch......");
}
}
public static void getResult() throws ArithmeticException{ //把建立的異常物件拋給呼叫此方法的地方
System.out.println(1/0); //建立一個ArithmeticException型別的異常物件
System.out.println("========"); //如果上一行程式碼建立了異常物件並向上丟擲了。此行程式碼不會執行
}
}
執行結果圖:
相關文章
- Java中throw和throws的區別Java
- Java中異常分類和Throw和Throws的區別Java
- 異常-throw的概述以及和throws的區別
- Java異常十一:使用throw丟擲異常物件;throw和throws的區別Java物件
- Java異常機制關鍵字總結,及throws 和 throw 的區別Java
- 異常處理機制(一)之throw與throws的區別
- Java之for(;;)和while(true)的區別JavaWhile
- Java之.class和.getClass()的區別Java
- java複習之HashMap和Hashtable的區別JavaHashMap
- Java 建立使用者異常類、將異常一直向上拋、 throw和throws的區別Java
- 【Java】equals 和 == 的區別Java
- Java和Javascript的區別JavaScript
- java和html的區別JavaHTML
- java複習之 Vector、ArrayList和LinkedList 的區別Java
- JAVA常見面試題之Forward和Redirect的區別Java面試題Forward
- JAVA之編譯期和執行期區別Java編譯
- java 中equals和==的區別Java
- java yield()和sleep()的區別Java
- ArrayList 和 Vector 的區別 -JAVAJava
- Java中equals和==的區別Java
- java堆和棧的區別Java
- JavaScript和Java的區別(轉)JavaScript
- Java之InetSocketAddress和SocketAddress的區別Java
- java中的==和equal的區別Java
- Java集合面試題(03) Java中HashMap和HashTable之間區別Java面試題HashMap
- Java中Vector和ArrayList的區別Java
- 【Java面試】@Resource 和 @Autowired 的區別Java面試
- Java中 equals() 方法和 == 的區別Java
- 對於java中的"\"和"/" 區別Java
- 在java中“equals”和“==”的區別Java
- Java中堆和棧的區別Java
- java中==和equlas區別Java
- 敏捷和 Scrum 之間的區別敏捷Scrum
- Statement和PreparedStatement之間的區別
- Python之“==”和“is”區別Python
- PHP, Python和Java的區別分享PHPPythonJava
- JAVA中介面和抽象類的區別Java抽象
- Java中Runnable和Thread的區別Javathread