系列文章目录
文章目录
一、说出两个我们在使用软件、APP时遇到的错误。这些错误可能是什么类型的错误?
在使用软件、APP时常见的错误包括崩溃错误和网络错误。崩溃错误是指应用程序意外终止或崩溃,导致无法正常使用。这些意外包括内存占比过高,导致电脑卡死机。网络错误:比如在需要网络连接的应用中,由于网络不稳定或无网络连接导致的错误。
解决办法,我自己是打开任务管理器去强制关闭出现错误的软件或APP,解决网络错误可以通过检查网络连接状态,并在网络不可用时提供相应的提示或重试机制。
二、说出两个你在编写Java程序时最常遇到的错误。并判定这些错误是什么类型的错误(编译错误、运行时错误)。你认为哪种类型的错误更好解决呢?
编译错误:比如语法错误,如缺少分号、括号不匹配等。这些错误在代码编译时会被编译器发现,必须修正后才能继续。
非零返回:在代码中没有搞明白,在哪段代码中要加入返回值,或者什么时候返回0。
哪种错误更好解决:通常编译错误更容易解决,因为编译器会提供具体的错误信息和位置,而运行时错误可能更难以预测和定位,尤其是在复杂的程序中。
三、查询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));
}
x[i] = Integer.parseInt(inputInt); 这行代码抛出 NumberFormatException异常
因为 NumberFormatException 是一个受检异常(checked exception),而在这个例子中,它不是必须被捕获或声明抛出的,因为 main 方法不声明抛出任何异常。
添加了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();
try {
x[i] = Integer.parseInt(inputInt);
i++;
} catch (NumberFormatException e) {
System.out.println("Invalid input. Please enter an integer.");
}
}
System.out.println(Arrays.toString(x));
}
四、将如下代码中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);
在这段代码中,如果文件 abc 不存在,会抛出 FileNotFoundException。这个异常是 IOException 的子类,表示尝试打开文件时找不到文件。
这个异常意味着文件无法被找到或打开,通常需要捕获这个异常来处理文件不存在的情况,比如提示用户文件不存在或尝试创建文件等。