亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java基礎--異常處理

2019-11-14 11:48:03
字體:
來源:轉載
供稿:網友

1.異常的概念

java的異常指的是運行期出現的錯誤,觀察錯誤的名字和行號最重要

Java異常是Java提供的用于處理程序中錯誤的一種機制。

所謂錯誤是指在程序運行的過程中發生的一些異常事件(如:除以0溢出,數組下標越界,所要讀取的文件不存在)。

設計良好的程序應該在異常發生時提供處理這些錯誤的方法,使得程序不會因為異常的發生而阻斷或產生不可預見的結果。

Java程序的執行過程中如出現異常事件,可以生成一個異常類對象,該異常對象封裝了異常事件的信息并將被提交給Java運行時系統,這個過程叫做拋出異常。

當Java運行時系統接收到異常對象時,會尋找能處理這一異常的代碼并把當前異常對象交給其處理,這一過程稱為捕獲異常。

public void someMethod() {    throws SomeException {//聲明該方法可能拋出的異常
    if(someCondition()) {
            throw new SomeException("錯誤原因"); //構造并拋出異常對象        }    }}try{                                                  //調用該方法是試圖捕捉異常    someMethod();}catch(SomeExceptione){                //定義處理異常的代碼//異常處理代碼;}

捕獲異常:

    public static void main(String[] array) {        try {            System.out.PRintln(2 / 0);        } catch (ArithmeticException a) {            System.out.println("系統正在維護,請稍候……");            a.printStackTrace();        }    }

結果是:

系統正在維護,請稍候……java.lang.ArithmeticException: / by zero at Test1.Test.main(Test.java:7)

2.異常的分類

 throwable:可被拋出的

error:系統的錯誤,處理不了的

exception:能夠處理的錯誤

runtimeException:經常出的錯誤,可以捕獲也可以不捕獲其他類Exception:必須要捕獲

RuntimeException異常:

void m(int i) throws ArithmeticException {  if(i==0)   throw newArithmeticException("被除數為0"); }                                       //聲明m方法
Test te = new Test();te.m(0);第一種沒有捕獲錯誤,程序也可以執行

結果是:

Exception in thread "main" java.lang.ArithmeticException:被除數為0 at Test1.Test.m(Test.java:67) at Test1.Test.main(Test.java:25)

第二種捕獲錯誤:

 try {   newTest().m(0);  } catch (ArithmeticExceptionae) {   ae.printStackTrace();   System.out.println("出錯了");  }

結果是:

出錯了java.lang.ArithmeticException: 被除數為0 at Test1.Test.m(Test.java:67) at Test1.Test.main(Test.java:29)Exception的其他錯誤:

    FileInputStream in = null;    try{            in=new FileInputStream("myfile.txt");            int b;            b=in.read();            while(b!=-1){            System.out.print((char)b);            b=in.read();            }            }catch(FileNotFoundException e){            e.printStackTrace();            }            catch(IOException e){            System.out.println(e.getMessage());            }結果是:

java.io.FileNotFoundException: myfile.txt (系統找不到指定的文件。) at java.io.FileInputStream.open(NativeMethod) at java.io.FileInputStream.(Unknown Source) at java.io.FileInputStream.(Unknown Source) at Test1.Test.main(Test.java:41)Exception in thread "main" java.lang.NullPointerException at Test1.Test.main(Test.java:58)5.finally語句

try代碼段包含可能產生異常的代碼,后跟有一個或多個catch代碼段。每個catch代碼段聲明其能處理的一種特定類型的異常并提供處理方法,當異常發生時程序會終止當前的流程,根據獲取的異常的類型去執行相應的catch代碼段。

finally段的代碼無論try中的代碼是否發生異常都有執行,有異常時運行catch后在執行finally中的語句

try{                                    //可能拋出異常的語句

}catch(SomeException1 e){

……

}catch(SomeException2 e){

……

}finally{

……

}

在catch語句塊中可以使用e這個對象的一些方法獲取異常事件發生的信息。

如:getMessage()方法,用來得到有關異常事件的信息

printStackTrace()方法,用來跟蹤異常事件發生時執行堆棧的內容

finally語句:

finally語句為異常處理提供一個統一的出口,使得在控制流程轉到程序的其他部分以前,能夠對程序的狀態作統一的管理。

無論try所指定的程序塊中是否會拋出例外,finally所指定的代碼都要被執行

通常在finally語句中可以進行資源的清除工作,如:關閉打開文件,刪除臨時文件

finally {    try {      in.close();     } catch (IOException e) {      e.printStackTrace();        }

6.聲明方法拋出的異常

一些方法處理不了一些Exception,可以拋出,給其他方法處理

public class Test {    public static void main(String[] args) {        try {            new Test().f2();        } catch (IOException e) {            e.printStackTrace();        }    }    void f() throws FileNotFoundException, IOException {        FileInputStream in = new FileInputStream("myfile.txt");        int b;        b = in.read();        while (b != -1) {            System.out.print((char) b);            b = in.read();        }    }    void f2() throws IOException {                               //處理f中的異常        f();                                                    //運行這種情況,調用f2時,給f來處理    }}結果為:java.io.FileNotFoundException: myfile.txt(系統找不到指定的文件。)

 at java.io.FileInputStream.open(NativeMethod) at java.io.FileInputStream.(Unknown Source) at java.io.FileInputStream.(Unknown Source) at Test1.Test.f(Test.java:12) at Test1.Test.f2(Test.java:30) at Test1.Test.main(Test.java:6)

運行是結果是:myfile.txt (系統找不到指定的文件。)

另一個例子:

public class Test {    public static void main(String[] args) {        Test test = new Test();        try {            test.method1();        } catch (Exception e) {            e.printStackTrace();        }    }    public void method1() throws Exception {        method2();    }    public void method2() throws Exception {        method3();    }    public void method3() throws Exception {        throw new Exception("SomeException occur inmethod3");    }}結果是:

java.lang.Exception: SomeException occur in method3 at Test1.Test.method3(Test.java:21) at Test1.Test.method2(Test.java:18) at Test1.Test.method1(Test.java:15) at Test1.Test.main(Test.java:8)7.一些其他問題

在try后面catch不能先大后小,不能先IoException,后FileNotFoundException,因FileNotFoundException包括在IoException中。

使用自定義的異常:

class 異常類名 extends Exception{    public異常類名(String msg)         super(msg);    }}

1.通過繼承java.lang.Exception類聲明自己的異常類

2.在方法適當的位置生成自定義異常的實例,并用throw語句拋出

3.在方法的聲明部分用throws語句聲明該方法可能拋出的異常

public class MyException extends Exception {    private int id;    public MyException(String message, int id) {        super(message);        this.id = id;    }    public int getId() {        return id;    }}public class Test {    public void regist(int num) throws MyException {        if (num < 0) {            throw new MyException("人數為負值,不合理", 3);        }        System.out.println("登記人數" + num);    }    public void manager() {        try {            regist(-1);        } catch (MyException e) {            System.out.println("登記失敗,出錯類型碼=" + e.getId());            e.printStackTrace();                                  //輸出的第一行包含該對象的tostring()方法的結果。        }        System.out.println("操作結束");    }    public static void main(String[] args) {        Test t = new Test();        t.manager();    }}結果為:登記失敗,出錯類型碼=3

Test1.MyException: 人數為負值,不合理 at Test1.Test.regist(Test.java:16) at Test1.Test.manager(Test.java:22) at Test1.Test.main(Test.java:31)操作結束

 

聲明并拋出異常

重寫方法需要拋出與原方法所拋出異常類型一致異?;虿粧伋霎惓?/p>

class A{

    public void method() throws IOException{……}

    //B1的繼承就不對,必須要和原方法一致,既不能大,也不能小

    class B1 exrends A{public void method() throwsFileNotFoundException{……}}

}

class B2 extends A{public void method(){……}}這是可以的


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩午夜激情| 久久久免费电影| 狠狠久久亚洲欧美专区| 久久视频免费观看| 97在线看免费观看视频在线观看| 欧日韩不卡在线视频| 亚洲激情自拍图| 国产美女久久精品香蕉69| 久久综合色影院| 亚洲最大福利网站| 亚洲91精品在线观看| 久久影视电视剧凤归四时歌| 美女视频久久黄| 人人澡人人澡人人看欧美| 8050国产精品久久久久久| 色999日韩欧美国产| 欧美极品在线播放| 91视频88av| 欧美一级淫片aaaaaaa视频| 亚洲女同精品视频| 亚洲欧美激情四射在线日| 青草青草久热精品视频在线观看| 国a精品视频大全| 国产视频久久网| 亚洲天堂av图片| 欧美精品精品精品精品免费| 国产男女猛烈无遮挡91| 亚洲午夜国产成人av电影男同| 北条麻妃一区二区在线观看| 欧美日韩爱爱视频| 日韩网站免费观看高清| 这里只有精品视频| 91爱视频在线| 欧美性受xxxx黑人猛交| 亚洲欧美日韩中文在线| 高清在线视频日韩欧美| 91久久国产综合久久91精品网站| 91精品在线看| 亚洲成人网在线| 日韩一区二区久久久| 富二代精品短视频| 日韩av手机在线| 日av在线播放中文不卡| 欧美亚洲一区在线| 国产欧美一区二区三区四区| 国外成人在线播放| 亚洲mm色国产网站| 日韩精品中文字幕久久臀| 中文字幕无线精品亚洲乱码一区| 北条麻妃一区二区三区中文字幕| 国产精品69久久| 欧美激情亚洲自拍| 2020国产精品视频| 日韩精品中文字幕在线观看| 在线免费观看羞羞视频一区二区| 中文字幕亚洲专区| 国产精品视频区| 亚洲一区美女视频在线观看免费| 久久久精品电影| 亚洲国产日韩欧美在线99| 欧美一性一乱一交一视频| 亚洲成年人影院在线| 欧美日韩一区二区三区在线免费观看| 国产999精品久久久影片官网| 日韩三级影视基地| 亚洲精品久久久久久久久久久| 欧美成人中文字幕在线| 欧美激情综合色综合啪啪五月| 亚洲一品av免费观看| 国产精品中文字幕久久久| 国产亚洲欧美日韩一区二区| 国产精品视频网站| 亚洲人成网站999久久久综合| 亚洲一区二区三区成人在线视频精品| 日韩中文字幕亚洲| 欧美性视频在线| 亚洲欧美激情另类校园| 欧美中文字幕在线视频| 神马国产精品影院av| 久久综合网hezyo| 国产精品欧美一区二区三区奶水| 日韩电影在线观看中文字幕| 亚洲二区在线播放视频| 日韩网站免费观看| 国产在线98福利播放视频| 欧美亚洲成人免费| 国产在线观看不卡| 国产精品爽黄69| 97精品一区二区视频在线观看| 亚洲人午夜色婷婷| 亚洲tv在线观看| 超碰97人人做人人爱少妇| 亚洲在线免费观看| 日韩欧美中文在线| 国产香蕉一区二区三区在线视频| 成人在线观看视频网站| 亚洲欧美中文在线视频| 亚洲区免费影片| 欧美网站在线观看| 亚洲欧美在线一区二区| 91精品国产91久久久久久吃药| 美女国内精品自产拍在线播放| 粉嫩av一区二区三区免费野| 俺去亚洲欧洲欧美日韩| 亚洲xxxx做受欧美| 日本国产一区二区三区| 欧美日本国产在线| 91精品美女在线| 亚洲视频在线视频| 欧美性受xxxx黑人猛交| 欧美激情一区二区三区成人| 国产日韩中文字幕| 欧美第一页在线| 成人做爰www免费看视频网站| 久久综合久久美利坚合众国| 欧美日韩国产综合视频在线观看中文| 97精品一区二区三区| 911国产网站尤物在线观看| 最近2019免费中文字幕视频三| 欧美激情一级欧美精品| 国产区精品在线观看| 夜夜嗨av一区二区三区免费区| 91免费精品视频| 久久久久久久影视| 深夜福利亚洲导航| 78m国产成人精品视频| 美女福利视频一区| 国产精品对白刺激| 97久久精品视频| 国产成人精品在线观看| 久久精品视频99| 亚洲无限乱码一二三四麻| 亚洲另类欧美自拍| 国产精品极品美女在线观看免费| 欧美精品久久久久久久免费观看| 日韩欧美在线视频日韩欧美在线视频| 亚洲女性裸体视频| 欧美性猛交xxxx乱大交3| 国产在线拍揄自揄视频不卡99| 亚洲欧洲第一视频| 亚洲永久免费观看| 456亚洲影院| 亚洲欧美国产一区二区三区| 91精品久久久久久综合乱菊| 日韩免费电影在线观看| 51精品国产黑色丝袜高跟鞋| 欧美成人h版在线观看| 91性高湖久久久久久久久_久久99| 国产精品视频资源| 中文字幕国产日韩| 欧美怡春院一区二区三区| 欧美性猛交xxxx免费看久久久| 欧美极品少妇xxxxx| 在线观看国产精品淫| 国产一区二区三区在线播放免费观看| 国产精品久久久久久久久久东京| 国产福利视频一区二区| 午夜精品久久久久久99热软件| 欧美一区二区三区四区在线| 96sao精品视频在线观看| 国内外成人免费激情在线视频网站| 欧美午夜久久久| 亚洲精品第一国产综合精品| 中文字幕综合在线|