Java異常詳細介紹
①
原始碼:
package cn.ecut.Exception;
/**
* Java三種型別的異常
* 1、檢查性異常(IOException):最具代表的檢查性異常是使用者錯誤或問題引起的異常,這是程式設計師無法預見的
* 例如要開啟一個不存在的檔案時,一個異常就發生了,這些異常在編譯時不能簡單地忽略
* 2、執行時異常(RuntimeException):執行時異常是可能被程式設計師避免的異常,與檢查性異常相反,執行時異常可以在編譯時被忽略
* 3、錯誤(Error):錯誤不是異常,而是脫離程式設計師控制的問題。錯誤在程式碼中通常被忽略。例如,當棧溢位時,一個錯誤就發生了
* 它們在編譯時被忽略
*
* 關鍵字:try catch finally throw throws
*
* Error和Exception的區別:Error通常是災難性的致命的錯誤,是程式無法控制和處理的,當出現這些異常時,Java虛擬機器(JVM)
* 一般會選擇終止執行緒;Exception通常情況下是可以被程式處理的,並且在程式中應該儘可能的去處理這些異常
*/
public class Demo1 {
public static void main(String[] args) {
int a=1;
int b=0;
try{ //try監控區域
System.out.println(a/b);
}catch(ArithmeticException e){ //catch 捕獲異常
System.out.println("分母不能為0!");
}finally{ //finally 處理善後工作
System.out.println("finally");
}
}
}
執行結果:
分母不能為0!
finally
②
原始碼:
package cn.ecut.Exception;
public class Demo2 {
public static void main(String[] args) {
int a = 1;
int b = 0;
//假設要捕獲多個異常:從小到大!
try { //try監控區域
System.out.println(a / b);
} catch (Error e) { //catch 捕獲異常
System.out.println("Error!");
} catch (Exception e) {
System.out.println("Exception!");
} catch (Throwable t) {
System.out.println("Throwable!");
} finally { //finally 處理善後工作
System.out.println("finally");
}
}
}
執行結果:
Exception!
finally
③
原始碼:
package cn.ecut.Exception;
public class Demo3 {
public static void main(String[] args) {
int a=1;
int b=0;
try{ //try監控區域
System.out.println(a/b);
}catch(Exception e){ //catch 捕獲異常
e.printStackTrace(); //列印錯誤資訊
}finally{ //finally 處理善後工作
System.out.println("finally");
}
}
}
執行結果:
java.lang.ArithmeticException: / by zero
at cn.ecut.Exception.Demo3.main(Demo3.java:10)
finally
④
原始碼:
package cn.ecut.Exception;
public class Demo4 {
public static void main(String[] args) {
try{
new Demo4().test(1,0);
}catch(ArithmeticException e){
System.out.println("分母不能為0!");
e.printStackTrace();
}
}
//假設在這方法中,處理不了這個異常(沒有try...catch),方法上丟擲異常(throws),誰呼叫這個方法誰就要處理這個異常
//呼叫者可以選擇捕獲異常(try...catch)或者繼續向上丟擲異常(throw)
public void test(int a,int b)throws ArithmeticException{
if(b==0){
throw new ArithmeticException(); //主動丟擲異常,一般在方法中使用
}else{
System.out.println(a/b);
}
}
}
執行結果:
分母不能為0!
java.lang.ArithmeticException
at cn.ecut.Exception.Demo4.test(Demo4.java:19)
at cn.ecut.Exception.Demo4.main(Demo4.java:6)
⑤
原始碼:
package cn.ecut.Exception;
/**
* 自定義的異常類
*/
public class MyException extends Exception {
//傳遞數字>13
private int detail;
public MyException(int a){
this.detail=a;
}
public String toString(){
return "MyException{"+detail+'}';
}
}
package cn.ecut.Exception;
public class Test {
public static void main(String[] args) {
try{
test(14);
}catch(MyException e){
System.out.println("Myexception=>"+e);
}
}
static void test(int a) throws MyException{
System.out.println("傳遞的數為:"+a);
if(a>13){
throw new MyException(a);
}
}
}
執行結果:
傳遞的數為:14
Myexception=>MyException{14}
相關文章
- Java_異常介紹Java
- 超詳細 Java 15 新功能介紹Java
- Kafka詳細介紹Kafka
- javascript this詳細介紹JavaScript
- ApplicationContext 詳細介紹APPContext
- JDBC 詳細介紹JDBC
- Ifconfig詳細介紹
- Git詳細介紹Git
- java運算子和表示式詳細介紹Java
- Spring bean詳細介紹SpringBean
- python字典詳細介紹Python
- Nacos 介面詳細介紹
- SOLIDWORKS API詳細介紹SolidAPI
- Go Channel 詳細介紹Go
- Java開源的混淆器 Proguard詳細介紹Java
- 註解的詳細介紹
- Flutter系列(一)——詳細介紹Flutter
- Nginx服務詳細介紹Nginx
- LVM詳細介紹及建立LVM
- Webpack 打包 Javascript 詳細介紹WebJavaScript
- 【SCN】Oracle SCN 詳細介紹Oracle
- Http Module 的詳細介紹HTTP
- wireshark、異常資料分析、常見RST介紹
- Dart語言詳解(一)——詳細介紹Dart
- pyhanlp 文字聚類詳細介紹HanLP聚類
- TreeViewTemplate移動元件詳細介紹View元件
- oracle 大頁配置詳細介紹Oracle
- spring @component 的作用詳細介紹Spring
- Python3 錯誤和異常介紹Python
- 四,Java運算子詳細分類及使用方法介紹Java
- JavaScript FormData的詳細介紹及使用JavaScriptORM
- BN(Batch Normalization)層的詳細介紹BATORM
- vuex詳細介紹和使用方法Vue
- Fabric1.3新功能詳細介紹
- Aidl程式間通訊詳細介紹AI
- flutter接入現有的app詳細介紹FlutterAPP
- 渲染樹與css解析詳細介紹CSS
- WindowsPE重灌Windows系統詳細介紹Windows