Java基础详细笔记之异常处理
在Java编程中,程序出现异常是经常发生的事情。如果程序出现异常而未被妥善处理,那么程序将会崩溃,导致应用程序无法继续运行。所以Java提供了异常机制,它允许我们在程序中去处理异常情况,从而使得程序可以正常地继续执行。
异常的分类
Java中将异常分为两类:
- 可查异常,如IO异常、SQL异常等。它们必须在程序中进行处理,否则编译器会报错。
- 运行时异常,如NullPointerException、ArrayIndexOutOfBoundsException等。它们在程序执行时才会出现问题,可以选择在程序中处理,也可以不处理,编译器不会报错。
如何处理异常
Java提供了两种机制来处理异常:
- try-catch-finally语句块:我们可以使用try语句块来将一段可能发生异常的代码包裹起来,然后通过catch块来实现异常的捕捉和处理,最后通过finally块来执行一些清理工作。
- throws关键字:我们可以使用throws关键字来将可能发生异常的方法抛给上层的调用者进行处理。
下面我们通过示例来详细说明这两种机制的用法。
使用try-catch-finally语句块处理异常
示例一:除数为零导致的算术异常
public static void main(String[] args) {
int dividend = 10;
int divisor = 0;
try {
int result = dividend / divisor;
} catch (ArithmeticException e) {
System.out.println("除数不能为零!" + e.getMessage());
} finally {
System.out.println("程序执行完毕!");
}
}
以上代码中,在try语句块中执行了一段可能会引发算术异常的代码。如果出现了算术异常,那么就会进入catch块中进行处理,并输出错误信息。无论是否有异常发生,finally块中的代码都会被执行到。
示例二:文件不存在导致的IO异常
public static void main(String[] args) {
File file = new File("D:/test.txt");
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.out.println("文件不存在!" + e.getMessage());
} catch (IOException e) {
System.out.println("读取文件发生错误!" + e.getMessage());
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("程序执行完毕!");
}
}
以上代码中,我们通过try-catch-finally语句块来处理可能发生的文件不存在和读取文件错误的异常。在try语句块中,我们使用BufferedReader来读取文件中的数据。如果文件不存在,那么就会进入FileNotFoundException的catch块中进行处理;如果读取文件发生错误,那么就会进入IOException的catch块中进行处理。在finally块中,我们对BufferedReader进行close操作,无论是否发生异常都会执行到。
使用throws关键字处理异常
示例三:方法抛出IOException异常给上层调用者处理
public void readFromFile(String fileName) throws IOException {
File file = new File(fileName);
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} finally {
br.close();
}
}
以上代码中,readFromFile方法可能读取文件发生错误,因此我们将可能发生的IO异常抛给上层调用者去处理。在方法定义中,我们使用了throws关键字,表示该方法可能会抛出IOException异常。调用这个方法时,需要进行异常处理。
示例四:上层调用者处理readFromFile方法抛出的异常
public static void main(String[] args) {
try {
readFromFile("D:/test.txt");
} catch (IOException e) {
System.out.println("读取文件发生错误!" + e.getMessage());
}
System.out.println("程序执行完毕!");
}
以上代码中,我们在main方法中调用了readFromFile方法,并且使用try-catch语句块来处理方法抛出的可能发生的IO异常。
以上就是Java基础详细笔记之异常处理的完整攻略,包括异常的分类、如何处理异常、以及使用try-catch-finally语句块和throws关键字的示例。希望能对大家有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java基础详细笔记之异常处理 - Python技术站