1、Throwable 是Error和Exception父類。
Error錯誤(程序崩潰):
1、虛擬機錯誤(VirtualMachineError)
2、線程死鎖(ThreadDeath)
3、等...
Exception錯誤:
1、編碼、環境、用戶操作輸入出現問題
2、Exception有很多子類分爲兩種RuntimeException(非檢查異常)和檢查異常
一、try-catch(多catch塊)-finally<br>
(1)try塊:負責捕獲異常,一旦try中發現異常,程序的控制權將被移交給catch塊中的異常處理程序。【try語句塊不可以獨立存在,必須與 catch 或者 finally 塊同存】<br>
(2)catch塊:如何處理?比如發出警告:提示、檢查配置、網絡連接,記錄錯誤等。執行完catch塊之後程序跳出catch塊,繼續執行後面的代碼。<br>
·編寫catch塊的注意事項:多個catch塊處理的異常類,要按照先catch子類後catch父類的處理方式,因爲會【就近處理】異常(由上自下)。<br>
(3)finally:最終執行的代碼,用於關閉和釋放資源等
try{
//一些拋出異常的方法
}
catch(Exception e){
//處理該異常的代碼塊
}
try{
System.out.print("請輸入你的年齡");
Scanner input=new Scanner(System.in);
int age=input.nextInt();
System.out.println("十年後你"+(age+10)+"歲");
}
catch(inputmisException e){
System.out.println("你應該輸入整數");
}
System.out.print();
try拋出很多種類的異常
try{
//一些拋出異常的方法
}
catch(Exception e){
//處理該異常的代碼塊
}
catch(Exception2 e){
//
}
Scanner input=new Scanner(System.in);
try{
System.out.print("請輸入第一個數");
int one=input.nextInt();
System.out.print("請輸入第二個數");
int two=input.nextInt();
System.out.println("兩數相除的結果爲"+one/two);
}
catch(inputmisException e){
System.out.println("你應該輸入整數");
}
catch (ArithException e){
System.out.println("除數不能爲0");
}
catch(Exception e){
System.out.println("我是不知名異常");
}
System.out.println("程序結束啦");
try{
//一些拋出異常的方法
}
catch(Exception e){
//處理該異常的代碼塊
}
catch(Exception2 e){
//
}
finally{//最終要執行的一些代碼
}
定義自己的異常
//異常類
public class CreditCardException extends Exception {
public CreditCardException(String s){super(s); // 調用父類的Exception構造函數
}
public static void check(int i) throws
CreditCardException{
if(i<0){
throw new CreditCardException("credit card="+i);
}
}
}
//檢驗類
public class CheckCreditCard {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
CreditCardException.check(-9);
}
catch(CreditCardException e){
e.printStackTrace();
System.out.println("拋出異常");
return;
}
System.out.println("done.");
}
}
異常有兩類——檢驗異常(Exception類的子類) 和 非檢驗異常(RuntimeException 類的子類),
finally 語句一般在catch 塊的結尾執行,try 或 catch 語句中的return 句子不能阻止finally 語句的執行