JavaSE學習總結(八)—— 異常處理(Exception)

1、理解異常及異常處理的概念

異常就是在程序的運行過程當中所發生的不正常的事件,它會中斷正在運行的程序。java

異常不是錯誤數據庫

程序中關鍵的位置有異常處理,提升程序的穩定性apache

2、掌握Java異常處理機制

 Java的異常處理是經過5個關鍵字來實現的數組

try:嘗試,把有可能發生錯誤的代碼放在其中,必須有安全

catch:捕獲,當發生異常時執行jsp

finally:最終,無論是否有異常都將執行ide

throw:拋出,引起異常spa

throws:拋出多個,聲明方法將產生某些異常hibernate

 

3、掌握try 、catch 、 finally 處理異常

 3.一、try..catch

package com.zhangguo.chapter6.d1;

import java.util.Scanner;

public class Exception1 {

    public static void main(String[] args) {
        
        Scanner input=new Scanner(System.in);
        //int i=input.nextInt();
        int i=Integer.parseInt(input.next());
        System.out.println("您輸入的是:"+i);
        System.out.println("程序結束了");
    }

}

異常處理:線程

package com.zhangguo.chapter6.d1;

import java.util.Scanner;

public class Exception1 {

    public static void main(String[] args) {

        try {
            Scanner input = new Scanner(System.in);
            int i = Integer.parseInt(input.next());
            System.out.println("您輸入的是:" + i);
        } catch (Exception exp) {
            System.out.println("發生異常了:" + exp.getMessage());
        }
        System.out.println("程序結束了");
    }

}

結果:

3.二、try..catch..finally

finally在任何狀況下都將執行,正常時會執行,不正常也會執行

package com.zhangguo.chapter6.d1;

import java.util.Scanner;

public class Exception1 {

    public static void main(String[] args) {

        try {
            Scanner input = new Scanner(System.in);
            int i = Integer.parseInt(input.next());
            System.out.println("您輸入的是:" + i);
        } catch (Exception exp) {
            System.out.println("發生異常了:" + exp.getMessage());
        }finally {
            System.out.println("輸入結束");
        }
        System.out.println("程序結束了");
    }

}

結果:

1
您輸入的是:1
輸入結束
程序結束了

若是用戶輸入是的xyz

4、掌握throw 拋出異常、throws 聲明異常

 4.一、java中經常使用的異常

//算術異常
ArithmeticExecption

//空指針異常類
NullPointerException

//類型強制轉換異常
ClassCastException

//數組負下標異常
NegativeArrayException

//數組下標越界異常
ArrayIndexOutOfBoundsException

//違背安全原則異常
SecturityException

//文件已結束異常
EOFException

//文件未找到異常
FileNotFoundException

//字符串轉換爲數字異常
NumberFormatException

//操做數據庫異常
SQLException

//輸入輸出異常
IOException

//方法未找到異常
NoSuchMethodException

//抽象方法錯誤,當應用試圖調用抽象方法時拋出
 java.lang.AbstractMethodError

//斷言錯誤,用來指示一個斷言失敗的狀況
java.lang.AssertionError

//類循環依賴錯誤,若檢測到類之間循環依賴則拋出該異常
java.lang.ClassCircularityError

//類格式錯誤
java.lang.ClassFormatError

//錯誤基類,標識嚴重程序運行問題,不該被應用程序捕獲的反常狀況
java.lang.Error

//非法訪問錯誤,違反域或方法的可見性聲明
java.lang.IllegalAccessError

//不兼容的類變化錯誤,當正在執行的方法所依賴的類定義發生了不兼容的改變時,拋出該異常
java.lang.IncompatibleClassChangeError

//實例化錯誤,構造一個抽象類或者接口時拋出該異常
java.lang.InstantiationError

//內部錯誤
java.lang.InternalError

//連接錯誤
java.lang.LinkageError

//未找到類定義錯誤,找不到該類的定義時拋出該錯誤
java.lang.NoClassDefFoundError

//域(成員變量,字段)不存在錯誤
java.lang.NoSuchFieldError

//方法不存在錯誤
java.lang.NoSuchMethodError

//內存不足錯誤
java.lang.OutOfMemoryError

//堆棧溢出錯誤,如遞歸調用的層次太深
java.lang.StackOverflowError

//線程已結束
java.lang.ThreadDeath

//未知錯誤
java.lang.UnknownError

//未知足的連接錯誤
java.lang.UnsatisfiedLinkError

//不支持的類版本錯誤
java.lang.UnsupportedClassVersionError

//驗證錯誤
java.lang.VerifyError

//虛擬機錯誤
java.lang.VirtualMachineError

//算術條件異常,如整數除零
java.lang.ArithmeticException

//數組索引越界異常
java.lang.ArrayIndexOutOfBoundsException

//數組存儲異常,存放非數組聲明類型
java.lang.ArrayStoreException

//類型轉換異常
java.lang.ClassCastException

//找不到類異常
java.lang.ClassNotFoundException

//克隆不支持異常,如沒有實現Cloneable接口
java.lang.CloneNotSupportedException

//枚舉常量不存在異常
java.lang.EnumConstantNotPresentException

//根異常
java.lang.Exception

//非法訪問異常
java.lang.IllegalAccessException

//非法的監控狀態異常
java.lang.IllegalMonitorStateException

//非法的狀態異常
java.lang.IllegalStateException

//非法的線程狀態異常
java.lang.IllegalThreadStateException

//索引越界異常
java.lang.IndexOutOfBoundsException

//實例化異常
java.lang.InstantiationException

//被中斷異常
java.lang.InterruptedException

//數組大小爲負值異常
java.lang.NegativeArraySizeException

//屬性不存在異常,當訪問某個類的不存在的屬性時拋出該異常
java.lang.NoSuchFieldException

//方法不存在異常
java.lang.NoSuchMethodException

//空指針異常。當應用試圖在要求使用對象的地方使用了null時,拋出該異常
java.lang.NullPointerException

//數字格式異常
java.lang.NumberFormatException

//運行時異常
java.lang.RuntimeException

//安全異常
java.lang.SecurityException

//字符串索引越界異常
java.lang.StringIndexOutOfBoundsException

//類型不存在異常
java.lang.TypeNotPresentException

//不支持的方法異常
java.lang.UnsupportedOperationException

//Jsp頁面異常
javax.servlet.jsp.JspException

//JSP引擎解析異常
org.apache.jasper.JasperException

//Servlet異常
javax.servlet.ServletException

//對象已被刪除異常
org.hibernate.ObjectDeletedException
經常使用的異常

 

4.二、throw..throws

package com.zhangguo.chapter6.d1;

public class Exception2 {

    public static void main(String[] args) {
        
        try {
            System.out.println(div(30,3));
        } catch (Exception e) {
            //輸出異常的堆棧信息
            e.printStackTrace();
        }
        
        try {
            System.out.println(div(3,0));
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        
    }
    
    //throws 聲明方法將可能拋出異常
    public static int div(int n1,int n2) throws Exception{
        if(n2==0){
            //拋出異常
            throw new Exception("除數不能爲零");
        }
        return n1/n2;
    }

}

運行結果:

5、掌握自定義異常

 

public class ArithmeticException extends RuntimeException {
    private static final long serialVersionUID = 2256477558314496007L;

    /**
     * Constructs an {@code ArithmeticException} with no detail
     * message.
     */
    public ArithmeticException() {
        super();
    }

    /**
     * Constructs an {@code ArithmeticException} with the specified
     * detail message.
     *
     * @param   s   the detail message.
     */
    public ArithmeticException(String s) {
        super(s);
    }
}

 

 

相關文章
相關標籤/搜索