一、異常概述
1、異常(Exception),錯誤(Error):編碼過程或執行過程出現異常就會導致錯誤。
2、異常分類:
(1)編譯異常(checked異常)
(2)運行時異常(runtime異常)
3、Exception異常是一般異常的父異常
二、各種具體異常
1、算術異常
public class Main {
public static void main(String[] args) {
int num=5/0;
System.out.println(num); //java.lang.ArithmeticException 算術異常
}
}
2、找不到指定的類
public class Main {
public static void main(String[] args) {
try
{
Class.forName("com.mysql.jdbc.Driver");
//java.lang.ClassNotFoundException 找不到指定的類
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
}
}
3、空指針異常
public class Main {
@SuppressWarnings("null")
public static void main(String[] args) {
User user=null;
System.out.println(user.getUsername());
//java.lang.NullPointerException 空指針異常
}
}
4、數據越界
public class Main {
public static void main(String[] args) {
int[] num=new int[5];
num[5]=10;
System.out.println(num[5]);
//java.lang.ArrayIndexOutOfBoundsException 數據越界
}
}
三、異常處理
1、一旦方法被聲明拋出異常,那麼在使用該方法的時候就需要處理該異常
例如:
2、解決辦法:利用try、catch、finally、throws、throw
(1)繼續拋出
public class Main {
public void goHome() throws Exception
{
/*
* throws
*/
}
public static void main(String[] args) throws Exception {
Main mi=new Main();
mi.goHome();
}
}
(2)利用try...catch去捕獲使用該方法是可能出現的異常
public class Main {
public void goHome() throws Exception
{
/*
* throws
*/
}
public static void main(String[] args) {
Main mi=new Main();
try {
mi.goHome();
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("aa");
}
}
}
3、try...catch...finally的用法
(1)三個處理方法都不能單獨使用
(2)try...catch、try...finally可以配合使用
(3)catch...finally不能配合使用