一、异常概述
1.什么是异常?
异常(Exception)是程序运行过程中发生的不正常情况,它会导致程序终止运行或者破坏程序的正常流程。异常可以分为两种类型:编译时异常(checked exception)和运行时异常(unchecked exception)。
2.编译时异常和运行时异常的区别?
编译时异常:在编译阶段就需要处理,必须用try-catch语句或者throws关键字声明抛出,如IOException、SQLException等。
运行时异常:在运行阶段才会出现,不需要强制处理,如NullPointerException、ArithmeticException等。
二、异常处理机制
- try-catch-finally语句
try-catch-finally语句是Java异常处理的核心,它允许我们在一个代码块内捕获并处理异常。
try {
// 可能出现异常的代码
} catch (ExceptionType1 e) {
// 处理ExceptionType1异常
} catch (ExceptionType2 e) {
// 处理ExceptionType2异常
} finally {
// 无论是否出现异常,都会执行的代码
}
2.throws关键字
throws关键字用于声明一个方法可能抛出的异常,它将异常传递给调用方法。
public void method() throws ExceptionType {
// 可能抛出ExceptionType异常的代码
}
3.自定义异常
自定义异常是通过继承Exception类或者Throwable类来实现的。
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
三、实战应用
- 文件操作异常处理
在文件操作中,可能会遇到文件不存在、文件访问权限不足等异常。我们可以使用try-catch-finally语句来处理这些异常。
import java.io.FileReader;
import java.io.IOException;
public class FileExceptionDemo {
public static void main(String[] args) {
FileReader reader = null;
try {
reader = new FileReader("example.txt");
int ch;
while ((ch = reader.read()) != -1) {
System.out.print((char) ch);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2.网络操作异常处理
在网络操作中,可能会遇到网络连接中断、服务器无响应等异常。我们可以使用try-catch-finally语句来处理这些异常。
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
public class NetExceptionDemo {
public static void main(String[] args) {
HttpURLConnection connection = null;
try {
URL url = new URL("http://www.example.com");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == 200) {
System.out.println("连接成功");
} else {
System.out.println("连接失败");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
}
总结:
本文从异常概述、异常处理机制和实战应用三个方面详细介绍了Java异常处理的相关知识。通过学习本文,你将能够更好地理解Java异常处理的概念和原理,掌握try-catch-finally语句、throws关键字和自定义异常的使用方法,提高程序的健壮性和可维护性。