1. 程式人生 > 其它 >一、JAVA的異常學習

一、JAVA的異常學習

專升本了,工作辭了,進了一所民辦的院校,有JAVA的課程,但是因為時間沒有合理的安排導致上課沒聽什麼課,考試前又沒複習,作業也沒交兩個,本來做好了補考的打算,但是神奇的是,我JAVA過了,考慮到下個學期有和JAVA相關的課程,在浪了半個月的情況下,這個寒假開始學JAVA,打卡第一天。時間:2022年1月16日

任務待辦:

1、學習JAVA

2、通過3月份的計算機4級考

3、通過3月份的計算機2級考

4、預習下個學期的課程


異常學習所需要的兩個包:

import java.util.InputMismatchException;   //此包在這裡的用處是建立一個用來儲存錯誤訊息的字串的引用
import java.util.Scanner;          //這個包是Scanner類所用到的包

public class Exception {
public static void main(String[] args) {
int i;
Scanner sc = new Scanner(System.in); //和C語言不同,scanf並沒有被繼承過來,取而代之的是一個Scanner
  // 在new物件的時候,其構造方法需要一個引數,這裡是System.in的引數,這是系統輸入的意思,可以理解為讀取使用者從鍵盤的輸入
i = sc.nextInt();            //呼叫方法 nextInt() 代表將輸入的值標記為int型別
System.out.print(i);        

//問題:如果我們輸入的值是非數字的值,報錯怎麼辦?


/*

使用try catch語句

語句的執行流程:

1、如果try內的的程式碼出現異常則中斷執行(從出現異常的那行/段程式碼開始)

2、執行對應的catch塊內的程式碼(如果異常的型別是catch括號中的型別)

3、繼續執行try catch語句結構之後的程式碼

程式碼的寫法:

try catch;  //自己處理異常

try{

(可能出現異常的程式碼)

}catch(異常的類名1 變數名A){

(如果出現了異常類中的異常,則執行該段的程式碼)  //catch可以有多個

}catch(異常的類名2 變數名B){

(如果出現了異常類中的異常,則執行該段的程式碼)

}finally{

(最終肯定必須要執行的程式碼)  

}

*/
try                
{                 
i = sc.nextInt();          
System.out.print(i);        
}                 
catch(InputMismatchException e)   //如果出現了InputMismatchException型別的異常,則執行下面{}中的程式碼
{
System.out.printf("輸入資料不合法");
}
}
}

/*

注意事項:

1、如果catch內的異常類存在子父類的關係,子類應該在前,父類在後

2、如果finally中有return語句,那麼最後返回的結果肯定以finally中的返回值為準

3、如果finally語句中有return,那麼沒有被處理的異常會被吞掉(說實話這三點不是很理解,等有一天理解了再回來填坑吧)

*/


問題:那我們為什麼不能用 if else來處理異常呢?

程式出現的問題是無法通過邏輯判斷來解決的,JAVA提供的異常處理機制可以解決邏輯判斷所無法處理的問題

人類前進的步伐怎能止步於此?

參考文獻:

https://blog.csdn.net/qq_34427165/article/details/83929470

https://blog.csdn.net/wanghuiwei888/article/details/78818203

https://www.bilibili.com/video/BV1ps411F7Sn?p=49