第 1 關:Java 中的異常處理機制
1.在 Java 中,源文件 Test.java 中包含如下代碼段,則程序編譯運行結果是( )
public class HelloWorld{
public static void main(String[] args){
System.out.print(“HelloWorld!”);
}
}
A、輸出:HelloWorld!
B、編譯出錯,提示“公有類HelloWorld必須在HelloWorld.java文件中定義”
C、運行正常,但沒有輸出內容
D、運行時出現異常
答案:b
2.下列關於檢測性異常和非檢測性異常正確的是( )
A、IOException及其子類(FileNotFoundException等),都屬於檢測型異常
B、檢測型異常不需要程序員來處理
C、運行時異常可以處理,也可以不處理,是可選的
D、錯誤也屬於異常的一種
E、所有的異常類是從 java.lang.Exception 類繼承的子類
答案:ace
3.關於下列代碼,說法正確的是()
public static void main(String[] args){
int num1 = 10;
int num2 = 0;
System.out.println(num1/num2);
}
A、輸出0
B、編譯報錯,提示除數不能爲0
C、輸出無窮大
D、運行時報錯,提示除數不能爲0
答案:d
第二關 捕獲異常
編程要求
請仔細閱讀右側代碼,根據方法內的提示,在 Begin - End
區域內進行代碼補充,具體任務如下:
- 編輯器中的代碼運行時可能會有異常,請利用本關知識處理該異常。
測試說明
補充完代碼後,點擊測評,平臺會對你編寫的代碼進行測試,當你的結果與預期輸出一致時,即爲通過。
輸入:
4
2
輸出:
2
輸入:
4
0
輸出:
除數不能爲0
提示:捕獲異常需要用特定的類,下表總結了常用的異常類:
答案如下
package step2;
import java.util.Scanner;
public class Task {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
/********* Begin *********/
try{
System.out.println(num1/num2);
}catch(ArithmeticException e){
System.out.print("除數不能爲0");
}
/********* End *********/
}
}
第 3 關:拋出異常
編程要求
請仔細閱讀右側代碼,根據方法內的提示,在 Begin - End
區域內進行代碼補充,具體任務如下:
- 異常的拋出和處理。
測試說明
補充完代碼後,點擊測評,平臺會對你編寫的代碼進行測試,當你的結果與預期輸出一致時,即爲通過。
預期輸出:該文件不存在
。
答案如下
package step3;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Task {
/********* Begin *********/
//請在合適的部位添加代碼
public static void main(String[] args)throws FileNotFoundException {
test();
}
public static void test() throws FileNotFoundException {
File file = new File("abc");
if(!file.exists()){ //判斷文件是否存在
//文件不存在,則 拋出 文件不存在異常
throw new FileNotFoundException("該文件不存在");
}else{
FileInputStream fs = new FileInputStream(file);
}
}
/********* End *********/
}
第 4 關:自定義異常
編程要求
請仔細閱讀右側代碼,根據方法內的提示,在 Begin - End
區域內進行代碼補充,具體任務如下:
- 定義一個自定義異常,判斷用戶名是否小於三位,如果用戶名小於三位,就拋出一個自定義異常。
測試說明
補充完代碼後,點擊測評,平臺會對你編寫的代碼進行測試,當你的結果與預期輸出一致時,即爲通過。
輸入:
admin
輸出:
用戶名格式正確
輸入:
ab
輸出:
Exception in thread "main" step4.MyException: 用戶名小於三位Exception at step4.Task.main(Task.java:13)
注意:因爲拋出異常時會顯示行號,請在 13
行拋出異常,否則評測可能不通過。
答案如下
package step4;
import java.util.Scanner;
public class Task {
/********* Begin *********/
public static void main(String[] args) throws MyException {
Scanner sc = new Scanner(System.in);
String username = sc.next();
if(username.length()❤️){
throw new MyException(“用戶名小於三位Exception”);
}
System.out.println("用戶名格式正確");
}
}
class MyException extends Exception{
public MyException(){
}
public MyException(String msg)
{
super(msg);
}
}
/********* End *********/