## Java專題四:異常
[TOC]

### 4.1. try-catch-finally捕獲異常
- 如果`try`語句塊中發生異常,會執行`catch`的語句塊,沒有異常,則不執行`catch`的語句塊
- 無論是否發生異常,`finally`語句塊都會被執行
- 可以使用多個`catch`來捕獲多個異常
~~~
try {
float fl = 10/0;
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ArithmeticException e) {
e.printStackTrace();
} finally{
// do something
}
~~~
### 4.2. throw和throws拋出異常
- 方法上拋出異常,使用`throws`關鍵字
~~~
public void fun() throws IOException{
// do something
}
~~~
- 方法中拋出異常,使用`throw`關鍵字
~~~
public void fun() {
// do something
throw new IndexOutOfBoundsException();
}
~~~
### 4.3. 自定義異常
1. 繼承自`Exception`,受檢查的異常
2. 繼承自`RuntimeException`,運行時的異常
~~~
class JOSNParseException extends Exception{
// do something
}
~~~
- JavaCook
- Java專題零:類的繼承
- Java專題一:數據類型
- Java專題二:相等與比較
- Java專題三:集合
- Java專題四:異常
- Java專題五:遍歷與迭代
- Java專題六:運算符
- Java專題七:正則表達式
- Java專題八:泛型
- Java專題九:反射
- Java專題九(1):反射
- Java專題九(2):動態代理
- Java專題十:日期與時間
- Java專題十一:IO與NIO
- Java專題十一(1):IO
- Java專題十一(2):NIO
- Java專題十二:網絡
- Java專題十三:并發編程
- Java專題十三(1):線程與線程池
- Java專題十三(2):線程安全與同步
- Java專題十三(3):內存模型、volatile、ThreadLocal
- Java專題十四:JDBC
- Java專題十五:日志
- Java專題十六:定時任務
- Java專題十七:JavaMail
- Java專題十八:注解
- Java專題十九:淺拷貝與深拷貝
- Java專題二十:設計模式
- Java專題二十一:序列化與反序列化
- 附加專題一:MySQL
- MySQL專題零:簡介
- MySQL專題一:安裝與連接
- MySQL專題二:DDL與DML語法
- MySQL專題三:工作原理
- MySQL專題四:InnoDB存儲引擎
- MySQL專題五:sql優化
- MySQL專題六:數據類型
- 附加專題二:Mybatis
- Mybatis專題零:簡介
- Mybatis專題一:配置文件
- Mybatis專題二:映射文件
- Mybatis專題三:動態SQL
- Mybatis專題四:源碼解析
- 附加專題三:Web編程
- Web專題零:HTTP協議
- Web專題一:Servlet
- Web專題二:Cookie與Session
- 附加專題四:Redis
- Redis專題一:數據類型
- Redis專題二:事務
- Redis專題三:key的過期
- Redis專題四:消息隊列
- Redis專題五:持久化