Java當中的異常 瞭解 當中的異常,那麼什麼是異常呢?異常又有什麼分類呢?異常中的特殊結構: 結構的使用方法。 異常是一種對象,是靠虛擬機產生的,異常中斷了正常指令流(程式靠著一個又一個指令)的事件,異常是運行時出現的。在 中編譯上出現的錯誤為所謂的語法上等的錯誤,而異常是編譯通過的,但在運行時產 ...
Java當中的異常
瞭解Java
當中的異常,那麼什麼是異常呢?異常又有什麼分類呢?異常中的特殊結構:try...catch...finally
結構的使用方法。
異常是一種對象,是靠虛擬機產生的,異常中斷了正常指令流(程式靠著一個又一個指令)的事件,異常是運行時出現的。在Java
中編譯上出現的錯誤為所謂的語法上等的錯誤,而異常是編譯通過的,但在運行時產生的,和編譯是沒有什麼關係的。
異常會中斷過程,後面就不再運行
異常是一個對象,對象對應相應的異常類,這些類是 jdk
提供的,異常的分類為Throwable
父類(所有的異常類都是這個類的子類),Throwable
分Exception
(代表所謂異常,Exception
還有很多子類,如:RuntimeException
),Error
(錯誤,一旦產生錯誤,虛擬機關閉,一旦產生Error
,虛擬機退出)
Exception分為兩大類,運行時異常和編譯時異常。
運行時異常的案例:
// uncheck exception
class Demo{
public static void mian(String args[]){
int i = i / 0;
System.out.println(i);
}
}
編譯時異常的案例:
// check exception
// 必須對其進行捕捉或者拋出以便聲明
class Demo{
public static void mian(String args[]){
Thread.sleep(1000);
}
}
RuntimeException
以及RuntimeException
的子類為uncheck exception
,除了RuntimeException
以及RuntimeException
的子類,都為check exception
。
異常中的特殊結構:try...catch...finally結構
class Demo{
public static void mian(String args[]){
try{
// 有可能出現異常的代碼放進try中,出現異常後,後面的代碼不再運行
int i = i / 0;
System.out.println(2); // 不再運行
}catch(Exception e){ // 出現異常進入到catch運行
// 對產生異常的代碼進行捕捉,列印異常信息
e.printStackTrace();
}
System.out.println(i);
}
}
// check 添加後就可以運行了
class Demo{
public static void mian(String args[]){
try{
Thread.sleep(1000);
}catch{
e.printStackTrace();
}
}
}
finally的加入(finally裡面的代碼都運行)
try{
代碼;
}catch(Exception e){
e.printStackTrace();
}finally{
// 這裡的代碼這麼樣都運行,出不出異常都運行
}
異常分Error
和Exception
兩大類,程式員對Error
是沒有辦法的,只能改代碼,但對Exception
是可以處理的,Java
中的異常處理機制是對系統的健壯性的體現,使用代碼結構可以處理異常的代碼,記住使用結構:try...catch...finally
。
throw和throws的作用
throw
案例
class User{
private int age;
public void setAge(int age){
if(age < 0){
// 如果年齡為負數,創建異常對象
RuntimeException e = new RuntimeException("年齡不能為負數");
// 會在運行時拋出這個異常對象,顯示 年齡不能為負數
throw e;
}
this.age = age;
}
}
出現異常,必須對其進行捕捉(try...catch...finally
結構)或聲明(throws
)
throws
案例
class User{
private int age;
public void setAge(int age) throws Exception{
if(age < 0){
// 如果年齡為負數,創建異常對象
RuntimeException e = new RuntimeException("年齡不能為負數");
// 會在運行時拋出這個異常對象,顯示 年齡不能為負數
throw e;
}
this.age = age;
}
}
throws
的作用,聲明異常,誰調用誰處理。怎麼理解,誰調用誰處理呢?
// 測試類,創建對象,進行調用,那麼就由這個調用者來處理
User user = new User();
try{
user.setAge(-10);
}catch(Exception e){
System.out.println(e);
}
誰調用我的時候誰就去處理,如上代碼解釋。throw
的作用是生成異常對象,對Java
虛擬機拋出異常,throws
的作用是聲明一個函數有可能生成異常,但不在這個函數進行處理,而是通過調用它的對象,進行處理。
結語
- 下麵我將繼續對
Java
、Android
中的其他知識 深入講解 ,有興趣可以繼續關註 - 小禮物走一走 or 點贊