<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    java 的異常處理的五個關鍵詞是什么


    發現錯別字 2年前 提問
    回答
    1
    瀏覽
    730
    請勿發布不友善或者負能量的內容。與人為善,比聰明更重要!
    回答數量: 1
    CISP-PTE CISM-WSE

    異常處理關鍵字:try、catch、finally、throw、throws

    異常:異常有的是因為用戶錯誤引起,有的是程序錯誤引起的,還有其它一些是因為物理錯誤引起的。

    try

    里面是可能出現異常的語句或者代碼塊。后面可以跟一個或多個catch代碼段。出現異常,終止try代碼段的執行,根據錯誤的類型找到對應的catch執行。

    1) 必須在 try 之后添加 catch 或 finally 塊。try 塊后可同時接 catch 和 finally 塊,但至少有一個塊。
    2) 必須遵循塊順序:若代碼同時使用 catch 和 finally 塊,則必須將 catch 塊放在 try 塊之后。

    格式

    try{
    //需要監聽的代碼塊
    }

    代碼演示

    public class ExceptionTest {
    public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    
    try{ //監聽代碼塊
    
    int a=input.nextInt();
    
    int b=input.nextInt();
    
    double sum=a/b;
    
    System.out.println(sum);
    
    }
    
    catch(InputMismatchException e){
    System.out.println("只能輸入數字");
    
    }
    
    catch(ArithmeticException e){
    System.out.println("分母不能為0");
    
    }
    
    catch(Exception e){ //Exception是所有異常的父類
    
    System.out.println("發生了其他異常");
    
    }
    
    finally{ //不管是否出現異常,finally一定會被執行
    
    System.out.println("程序結束");
    
    }
    
    }
    
    }

    catch

    在方法中使用try-catch的語句塊來處理異常。

    格式

    try{
         編寫可能會出現異常的代碼
    }catch(異常類型  e){
         處理異常的代碼
         //記錄日志/打印異常信息/繼續拋出異常
    }

    代碼演示

    public class TryCatchDemo {
        public static void main(String[] args) {
            try {// 當產生異常時,必須有處理方式。要么捕獲,要么聲明。
                read("b.txt");
            } catch (FileNotFoundException e) {// 括號中需要定義什么呢?
                  //try中拋出的是什么異常,在括號中就定義什么異常類型,也可以直接定義父類Exception
                System.out.println(e);
            }
            System.out.println("over");
        }
        /*
         *
         * 我們 當前的這個方法中 有異常  有編譯期異常
         */
        public static void read(String path) throws FileNotFoundException {
            if (!path.equals("a.txt")) {//如果不是 a.txt這個文件 
                // 我假設  如果不是 a.txt 認為 該文件不存在 是一個錯誤 也就是異常  throw
                throw new FileNotFoundException("文件不存在");
            }
        }
    }
    

    finally

    有一些特定的代碼無論異常是否發生,都需要執行。另外,因為異常會引發程序跳轉,導致有些語句執行不到。而finally就是解決這個問題的,在finally代碼塊中存放的代碼都是一定會被執行的。所以這個地方要避免使用return

    格式

    finally{
    //finally塊里的語句不管異常是否出現,都會被執行
    }
    修飾符 返回值 方法名 () throws 異常類型{ //throws只是用來聲明異常,是否拋出由方法調用者決定
    //代碼塊
    }

    代碼演示

    public class TryCatchDemo4 {
        public static void main(String[] args) {
            try {
                read("a.txt");
            } catch (FileNotFoundException e) {
                //抓取到的是編譯期異常  拋出去的是運行期 
                throw new RuntimeException(e);
            } finally {
                System.out.println("不管程序怎樣,這里都將會被執行。");
            }
            System.out.println("over");
        }
        /*
         *
         * 我們 當前的這個方法中 有異常  有編譯期異常
         */
        public static void read(String path) throws FileNotFoundException {
            if (!path.equals("a.txt")) {//如果不是 a.txt這個文件 
                // 我假設  如果不是 a.txt 認為 該文件不存在 是一個錯誤 也就是異常  throw
                throw new FileNotFoundException("文件不存在");
            }
        }
    }
    

    throw

    用于方法聲明時出拋出。

    格式

    throw new 異常類名(參數);

    代碼演示

    public class ThrowDemo {
        public static void main(String[] args) {
            //創建一個數組 
            int[] arr = {2,4,52,2};
            //根據索引找對應的元素 
            int index = 4;
            int element = getElement(arr, index);
    
            System.out.println(element);
            System.out.println("over");
        }
        /*
         * 根據 索引找到數組中對應的元素
         */
        public static int getElement(int[] arr,int index){ 
               //判斷  索引是否越界
            if(index<0 || index>arr.length-1){
                 /*
                 判斷條件如果滿足,當執行完throw拋出異常對象后,方法已經無法繼續運算。
                 這時就會結束當前方法的執行,并將異常告知給調用者。這時就需要通過異常來解決。 
                  */
                 throw new ArrayIndexOutOfBoundsException("哥們,角標越界了~~~");
                 //這是RuntimeException,拋出后不需要處理
            }
            int element = arr[index];
            return element;
        }
    }
    

    throws

    關鍵字throws運用于方法聲明之上,用于表示當前方法不處理異常,而是提醒該方法的調用者來處理異常(拋出異常).

    格式

    修飾符 返回值類型 方法名(參數) throws 異常類名1,異常類名2{   }    

    代碼演示

    public class ThrowsDemo {
        public static void main(String[] args) throws FileNotFoundException {
            read("a.txt");
        }
    
        // 如果定義功能時有問題發生需要報告給調用者。可以通過在方法上使用throws關鍵字進行聲明
        public static void read(String path) throws FileNotFoundException {
            if (!path.equals("a.txt")) {//如果不是 a.txt這個文件 
                // 我假設  如果不是 a.txt 認為 該文件不存在 是一個錯誤 也就是異常  throw
                throw new FileNotFoundException("文件不存在");
            }
        }
    }
    

    回答所涉及的環境:聯想天逸510S、Windows 10。

    2年前 / 評論
    亚洲 欧美 自拍 唯美 另类