java關(guān)于異常
1.什么是異常
程序中遇到的非致命錯(cuò)誤,而不是編譯時(shí)的語(yǔ)法錯(cuò)誤,如空指針異常,操作數(shù)越界,打開(kāi)一個(gè)不純?cè)诘奈募?、網(wǎng)絡(luò)中斷等等。
由于Java語(yǔ)言面向?qū)ο?,萬(wàn)物皆對(duì)象,異常也被看成是一種對(duì)象。
//=============================================
2.異常的繼承體系
? java.lang.Throwable -- 所有的錯(cuò)誤和異常的父類 ,異常這個(gè)事物最高的父類
?
? ? |-- 錯(cuò)誤 Error 所有錯(cuò)誤的父類
? ? |-- 異常 Exception 所有異常的父類
??Throwable類中的三個(gè)方法,都是將異常發(fā)生的信息,顯示出來(lái)
? String toString() 返回此 throwable 的簡(jiǎn)短描述。
? String getMessage() 返回此 throwable 的詳細(xì)消息字符串。
? void printStackTrace() 將此 throwable 及其追蹤輸出至標(biāo)準(zhǔn)錯(cuò)誤流。
//=============================================
3.如何處理異常
第一種處理方式:使用:try
? catch 處理異常。 ?格式語(yǔ)法:
try{
? ? ? ?被檢測(cè)的代碼
? ? ? ?可能發(fā)生異常的代碼
? ? ?}catch(異常類 變量){
? ? ? ?處理異常
? ? ? ?循環(huán),判斷,調(diào)方法
? ? ?}
案例:
class ExceptionDemo
{
?public static void main(String[] args)
?{
? try{
? int result = div(3,0);
? System.out.println("result="+result);
? }catch(Exception e){
? ? //輸出異常的信息
? ?e.printStackTrace();//打印異常信息,就用這個(gè)方法
? }
??
? System.out.println("Game Over");
?}
?private static int div(int x , int y){
? ? ? ? return x / y ;
?}
}
//==============
第二種方式:繼續(xù)拋出異常,關(guān)鍵字throw ?與 throws
throw 關(guān)鍵字用法:寫(xiě)在方法內(nèi)部的,意思拋出異常的意思,throw 后面寫(xiě)異常對(duì)象 new出來(lái)
throws 寫(xiě)在方法的聲明上,后面寫(xiě)的是異常類。
案例:
class ExceptionDemo2
{
?public static void main(String[] args) throws Exception
?{
? //System.out.println("Hello World!");
? method(15);
?}
?//定義一個(gè)方法,計(jì)算月份屬于那一個(gè)季節(jié)
?//throws Exception方法有異常,自己不處理,聲明出來(lái),交給調(diào)用者處理
?private static void method(int month)throws Exception{
? ?
? ? if(month < 1 || month > 12)
? ? ?//如果if成立,說(shuō)明月份非法,拋出異常
? ? ? throw new Exception();
? ? else if(month >=3 && month