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("========"); //如果上一行程式碼建立了異常物件並向上丟擲了。此行程式碼不會執行
}
}
執行結果圖:
相關文章
- throw和throws的區別
- Java中異常分類和Throw和Throws的區別Java
- 異常-throw的概述以及和throws的區別
- Java異常十一:使用throw丟擲異常物件;throw和throws的區別Java物件
- 異常處理機制(一)之throw與throws的區別
- Java之InetSocketAddress和SocketAddress的區別Java
- Java之.class和.getClass()的區別Java
- Java之for(;;)和while(true)的區別JavaWhile
- Java基礎:throw和throws的詳解Java
- java複習之HashMap和Hashtable的區別JavaHashMap
- java複習之 Vector、ArrayList和LinkedList 的區別Java
- 【Java】equals 和 == 的區別Java
- JAVA之編譯期和執行期區別Java編譯
- java yield()和sleep()的區別Java
- java 中equals和==的區別Java
- Python之“==”和“is”區別Python
- PHP, Python和Java的區別分享PHPPythonJava
- Java中 equals() 方法和 == 的區別Java
- Java中Vector和ArrayList的區別Java
- Java之String的equals與contentEquals區別Java
- 敏捷和 Scrum 之間的區別敏捷Scrum
- MySQL之Where和Having的區別MySql
- querySelector和getElementById之間的區別
- @Bean和@Component之間的區別?Bean
- Java基礎- ==和equals和hashCode的區別Java
- java:Date和DateTime區別Java
- java中==和equlas區別Java
- Java String.valueOf 和 toString的區別Java
- 【Java面試】@Resource 和 @Autowired 的區別Java面試
- Python和Java的區別?看完秒懂!PythonJava
- Java 之String、StringBuffer 和 StringBuilder 三者區別介紹JavaUI
- return,continue和break之間的區別
- CSS之Display、Visbility和Opactity的區別CSS
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- java中size()和length區別Java
- JAVA 中interface 和 abstract 區別Java
- Android之Intent的setClass和setClassName的區別AndroidIntent
- java面試題之Thread的run()和start()方法有什麼區別Java面試題thread