第十周预习报告:异常处理机制

说出两个我们在使用软件、APP时遇到的错误。这些错误可能是什么类型的错误?你是怎么解决这类错误呢(重启、查看日志...)?

  • ①程序运行时突然卡死。可能是系统错误。此时选择打开任务管理器强制结束程序,或者等待自动结束运行。
  • ②如果程序比较简单,大量输入数据进去有可能造成卡顿等。这是因为内存分配不当造成的。

说出两个你在编写Java程序时最常遇到的错误。并判定这些错误是什么类型的错误(编译错误、运行时错误)。你认为哪种类型的错误更好解决呢?

  • ①少了一个},;符号,这是编译错误。
  • ②或者数据的类型不正确。运行时错误。

编译错误更好解决,因为编译器会具体的告诉你错误原因,便于改正,还有quickfix功能。

查询JDK文档,说说如下代码哪行抛出了什么类型的异常?为什么该段程序明明可能产生错误,但是不写try...catch,也可编译通过。

public static void main(String[] args) {
 int[] x = new int[3];
 Scanner inputScan = new Scanner(System.in);
 for(int i = 0; i < x.length;){
     System.out.println("Please input the "+i+" integer:");
     String inputInt = inputScan.nextLine();  
     x[i] = Integer.parseInt(inputInt);  //注意这里!
     i++;
 }
 System.out.println(Arrays.toString(x));
}

假如输入了不是integer类型的数据(比如String类型的),会出现NumberFormatException。
因为这是Unchecked Exception类型的错误,只要预防录入数据不存在问题就不会错误,无需Try catch增加负担。

将如下代码中NumberFormatException改成Exception可以吗?

String x = "abc";
try {
 int a = Integer.parseInt(x);
 System.out.println(a);
} catch (NumberFormatException e) {
 e.printStackTrace();
}

可以

因为NumberFormatException是Exception的一个子类,但是没有必要使用,因为会降低代码的可读性。

查询JDK文档,说说如下代码哪里抛出了什么异常?该异常意味着吗什么?需要捕获吗?为什么?

String fileName = "abc";
FileReader fileReader = new FileReader(fileName);

没有用try catch包围。FileNotFoundException,即文件找不到异常,这是一种Checked Exception类型的错误,必须放入try catch进行捕获。

posted @ 2022-10-31 20:37  魔法少女小胖  阅读(39)  评论(1编辑  收藏  举报