---
# System prepended metadata

title: Java自學紀錄 - 例外型別
tags: [Java, 例外型別]

---

###### tags: `Java` `例外型別`
# Java自學紀錄 - 例外型別
當任何執行發生錯誤時,Java會產生一個例外(Exception),
## Error
1. LinkageError
當一個類別與另外一個類別產生連結時,執行時發現兩者有地方不相容。
2. VirtualMachineError
當Virtual Machine產生錯誤。
3. AWTError
當圖形化使用者介面生錯誤時。
## Exception
1. RunTimeException
相當於C++的runtime error。
可能是陣列超出範圍。
2. IOException 
輸入輸出的錯誤。
3. AWTException
圖形處理的錯誤。
## 例外處理模式
### 例外的捕捉
**使用方法**
先嘗試一個做法
並運用例外的捕捉顯示錯誤訊息
```java=
try{
    statement;
}
catch(Exception 1 ex){
    statemnet 1;
}
catch(Exception n ex){
    statemnet n;
}
```
1. **getMessage()**
回傳錯誤的訊息。
2. **toString()**
回傳錯誤的簡訊。
3. **printStackTrace()**
於主控台輸出錯誤訊息。
```java=
package learning;

public class Java_11_Exception {
    public static void main(String[] args) {
        try{
            int a = 2;
            int b = 0;
            int ans = a / b;
            System.out.println(ans);
        }
        catch(ArithmeticException ex){
            System.out.println(ex.getMessage());
            System.out.println(ex.toString());
            ex.printStackTrace();
        }
    }
}
```
>輸出結果
```java=
/ by zero
java.lang.ArithmeticException: / by zero
java.lang.ArithmeticException: / by zero
	at learning.Java_11_Exception.main(Java_11_Exception.java:8)
```
## finally
無論程式碼例外是否發生,均要執行。finally為保留字。
**使用方法**
```java=
try{
    statement;
}
catch(Exception 1 ex){
    statemnet 1;
}
finally{
    statment 2;
}
```