# 異常
### 一、生活中的異常:
感冒,癌癥
### 程序中常見的異常:
```ArrayIndexOfBoundsException``` :數組的下標越界異常
```classCastException``` :類型轉換異常
```IOException``` :流異常
```NullPointerException``` :空指針異常
```Error``` :錯誤,往往不是
```Exception``` :所有異常類的父類
## 二、異常的定義:
**異常 :指的是程序在執行過程中,出現的非正常的情況,最終會導致JVM的非正常停止。**
> 異常指的并不是語法錯誤,語法錯了,編譯不通過,不會產生字節碼文件,根本不能運行
### 異常分為編譯期異常和運行期異常:
1. 編譯期出現的異常必須解決
2. 運行期的異常根據情況選擇解決
## 三、處理異常的三種方式:
### 1. ```try catch``` 語法:
```java
try{
可能出現異常的代碼塊;
}catch(異常類型){
處理異常的代碼塊;
}
```
#### try catch 延伸的語法:
##### 1) ```catch``` 可以有多個代碼塊
```java
try{
可能出現異常的代碼塊;
}catch(異常類型){
處理異常的代碼塊;
}catch(異常類型){
處理異常的代碼塊;
}
```
> 如果多個catch 中異常類型有一定的關聯,那么異常類型的范圍應從小到大排序
##### 2) catch 代碼塊后面加上 ```finally```代碼塊
```java
try{
可能出現異常的代碼塊;
}catch(異常類型){
處理異常的代碼塊;
}catch(異常類型){
處理異常的代碼塊;
}finally{
代碼塊: 不管你try代碼塊里面的內容是否有異常,我finally代碼中的內容都會被執行
往往用做釋放資源的事情
}
```
> 面試題:```final``` ```finally``` ```finalize``` 三者的區別?
>
> - final用于聲明屬性,方法和類,分別表示屬性不可交變,方法不可覆蓋,類不可繼承。
> - finally是異常處理語句結構的一部分,表示總是執行。
> - finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,供垃圾收集時的其他資源回收,例如關閉文件等。
### 2. ```throw``` 語法:
聲明在方法體內,在方法體內向外拋出具體的異常實例。
```java
```
### 3. ```throws``` 語法:
一般聲明在方法的后面,自己不去解決這個異常,誰調用該方法,誰去解決
### 四、throw 和 throws 區別?
A: 有throws的時候可以沒有throw。
? 有throw的時候,如果throw拋的異常是Exception體系,那么必須有throws在方法上聲明。
B: throws用于方法的聲明上,其后跟的是異常類名,后面可以跟多個異常類,之間用逗號隔開
? throw用于方法體中,其后跟的是一個異常對象名
## 五、自定義異常:
只需繼承 ```Exception``` 異常即可,聲明無參構造函數和有參構造函數
- JAVA筆記
- 01、Java掃盲
- 1、JVM、JRE和JDK的區別
- 2、環境變量path和classpath的作用是什么?
- 3、變量有什么用?為什么要定義變量?什么時候用?
- 4、&和&&的區別?
- 5、標示符命名規則
- 6、數據類型
- 7、類型轉換
- 8、java語言的三種技術架構
- 9、java的跨平臺性
- 10、有符號數據的表示法(次重點)
- 11、按位運算符
- 12、函數
- 13、重載
- 14、數組
- 15、內存結構
- 一、數據結構
- 隨機數
- 流程控制語句
- if 和 if...else
- switch
- for
- 函數
- 重載
- 數組
- 數組的復制
- 冒泡排序法算法
- 方法
- 方法的重載
- 方法的練習
- 面向對象
- 面向對象的特點
- 如何創建類
- 如何創建對象
- 一、引用數據類型具有的默認值
- 二、成員變量和局部變量
- 三、構造函數
- 四、氣球理論
- 五、繼承(extends)
- 權限修飾符
- 封裝
- 內存的分配
- 多態
- super關鍵字
- static關鍵字
- final關鍵字
- 抽象類 抽象方法(abstract)
- 接口(interface)
- 單例模式(singleton)
- Object類
- 內部類
- 匿名內部類
- 階段項目
- 捕魚達人
- 飛機大戰
- 護盾功能
- 血條
- 爆炸
- API
- String 類相關的方法
- 第三方(Apache)jar包的使用
- 正則表達式
- StringBuffer 和StringBuilder 和Date
- 核心API:集合類
- List 集合
- 遍歷集合的方式
- 包裝類
- Map 集合
- 異常