異常處理是繼承throwable的子類,有兩種:error 和 exception.
error是系統崩潰或者資料庫崩潰,和**的編寫沒有關係.
exception是和**有關係的,是一種異常.
1.出現異常系統解決的辦法:
以main函式為例:有兩種方式
①.main函式自己解決
②.把問題拋給上級去解決(誰呼叫main函式就讓誰解決)
main函式就會拋給jvm虛擬機器處理.
jvm在控制台列印錯誤資訊 和 錯誤發生在什麼類的什麼位置.
2.自己解決的辦法:使用try…catch…捕獲異常
結構:
trycatch
捕獲異常的流程:
①.程式發生異常
②.根據發生的異常 產生對應的異常物件
③.這個異常物件會返回給呼叫者
④.如果呼叫者處理了這個異常(新增了try…catch…方法)
異常物件會繼續於catch中的語句進行匹配,如果匹配上了,就繼續執行這個程式
⑤.如果呼叫者沒有處理這個異常,那麼就會預設交給jvm虛擬機器處理,根據產生的異常物件列印錯誤資訊,結束程式
3.多catch捕獲異常
多catch捕獲異常可以幫助你完善**,讓出現的異常更容易被找到.
如果還要使用exception匹配異常,需要寫在最後,不然寫了詳細匹配的catch就會失效了
**舉例:
public
static
void
main();
trycatch(arithmeticexception e)catch(arrayindexoutofbound***ception e)catch(exception e)
}
實際寫**時,不是執行時異常就是編譯時異常
1.定義
執行時代異常:出現執行時**就是你的**有問題(程式設計師長犯的錯誤)
編譯時異常:出現編譯時異常系統會提前預警,強制你去處理,不處理編譯都不會處理
2.解決方法
執行時異常前面都已經說過了.使用try…catch…或者拋給上級處理.
編譯時異常其實就是系統這時候不知道你有沒有這個檔案,就相當於系統問你,要是沒有這個檔案怎麼辦,要求你做出解釋,提前做出解決辦法,這就是編譯時異常.是對問題的一種提前準備.
解決辦法;
①.自己處理,使用try…catch…
②.把異常丟擲去(誰呼叫就拋給誰)
3.例題舉例:
需求: 建立乙個人類 name 和 age要求: 人類的年齡賦值時 要在 0 到 100 歲 之間
public
static
void
main(string args)throws exception
class person
public
person(string name, int age)
//set/get方法
public string getname()
public
void
setname(string name)
public
intgetage()
// 如果這個方法 要丟擲異常給呼叫者
// 必須在方法的宣告中 標識這個方法為異常方法
// throw 和 throws 的區別?
// throw 是用來丟擲乙個異常物件(在方法中出現)
// throws 是用來標識乙個方法 可以丟擲乙個異常(在方法的宣告中出現)
public
void
setage(string age)throws exceptionelse
}// 重寫tostring方法
@override
public string tostring()
}class ageoutofbound***ception extends exception
public
ageoutofbound***ception(string message)
}
當出現異常時,先捕獲異常,但是無權處理.所以要將異常上拋,且進一步確定異常種類,然後上拋給可以處理的方法進行處理. java 異常詳解
一 異常機制出現的原因 異常處理能提公升程式的健壯性,c語言中是通過函式返回值來處理異常的,這種做法的弊端 1.返回值與現有邏輯可能衝突。2.可讀性差。執行 和異常處理 混淆在一起。3.需了解函式返回值詳細資訊,以做處理。異常處理demo author peter wang create time ...
java 異常 詳解
1 異常 理解 1 程式出現的不正常的情況。2 異常的體系 throwable error 嚴重問題,我們不處理。exception runtimeexception 執行期異常,我們需要修正 非runtimeexception 編譯期異常,必須處理的,否則程式編譯不通過 3 異常的處理 a jvm...
Java異常處理
package test public class testexception boolean testex throws exception catch exception e finally boolean testex1 throws exception system.out.println ...