Java中的異常

來源:互聯網
上載者:User

標籤:深度   bsp   nts   vat   設計   void   bubuko   pac   rac   

一.什麼是異常?

 java在運行階段形成的問題,或者錯誤就是異常。

二.異常的繼承關係

可以看出所有的異常都是由Throwable繼承而來,但是在下一層,就分為:Error和Exception。Error主要是jvm方向上的錯誤,比如說記憶體不足,和請求棧深度超過最大深度。(一般遇到這種情況就是等死吧),在設計Java程式時只需要考慮Exception下的異常。

三.編寫自己的異常類

編寫一個異常類必須要從相應的異常類繼承,最好是選擇意思相近的異常類。 

package com.cjm.exception;/** * 我的第一個異常類 *  * @author 小明 * */public class MyFirstExceptionText {    public static void main(String[] args) throws MyFirstException {        for (int i = 0; i < 3; i++) {            if (i == 2) {                throw new MyFirstException("你拋出了一個你自己寫的異常");            }        }    }}class MyFirstException extends Exception {    public MyFirstException() {    }    public MyFirstException(String str) {        super(str);    }}

 

 

四.撲捉異常

 形式:

          try{

               //可能出現異常的代碼

               }catch(類型1的異常){

       // 處理方式

                    }

     catch(類型2的異常){

       // 處理方式

                   }

 

package com.cjm.exception;/** * 使用try catch來撲捉異常 *  * @author 小明 * */public class TryCatchException {    public static void f() throws MyFirstException, MysecoExpection {        int i = 1;        if (i == 0) {            throw new MyFirstException("撲捉你的第一個異常");        } else {            throw new MysecoExpection("撲捉你的第二個異常");        }    }    public static void main(String[] args) {        try {            f();        } catch (MyFirstException e) {            e.printStackTrace();        } catch (MysecoExpection e) {            e.printStackTrace();        }    }}class MysecoExpection extends Exception {    public MysecoExpection() {    }    public MysecoExpection(String str) {        super(str);    }}

 

五.日誌 

 

import java.util.logging.Logger;/** * 日誌 *  * @author 小明 * */public class MyDaily {    public static void main(String[] args) {        try {            throw new MythrException();        }catch(MythrException e) {            System.err.println(e);        }                    }}class MythrException extends Exception{    private static Logger logger= Logger.getLogger("我的第一個日誌");    public MythrException() {        StringWriter trace =new StringWriter();        printStackTrace(new PrintWriter(trace));        logger.severe(trace.toString());    }    }

 

六.finally塊

fianlly語句一定會被執行,無論在try塊裡是否會有異常拋出。

      try{

               //可能出現異常的代碼

               }catch(類型1的異常){

       // 處理方式

                    }

     catch(類型2的異常){

       // 處理方式

                   }

       finally{

                //一定會被執行的語句      

     }

 例子:

package com.cjm.exception;/** * finally塊 *  * @author 小明 * */public class Finally {    public static void main(String[] args) {        try {            System.out.println("我的沒有異常!");        }catch (Exception e) {            // TODO: handle exception            e.printStackTrace();        }finally {            System.out.println("這一步一定會被執行!");        }                    }}

 

package com.cjm.exception;/** * finally塊 *  * @author 小明 * */public class Finally {    public static void main(String[] args) {        try {            throw new MyFirstException("有異常拋出");        }catch (MyFirstException e) {            // TODO: handle exception            e.printStackTrace();        }finally {            System.out.println("這一步一定會被執行!");        }    }}

 

 

 

 

 

 

 

 

 

i

Java中的異常

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.