以下是Java异常的详细讲解。
异常概念
Java 异常是在程序执行期间发生的意外或异常情况。Java 中的每个异常都是一个对象,这个对象指示发生了什么样的错误,并且包含了错误信息。当 Java 程序运行时,遇到异常情况时,它会抛出一个异常。这个异常可能是由 Java 运行时系统或代码自己抛出的。
当程序抛出异常时,它会中断当前的执行流程,并转而处理异常。因此,异常处理允许程序能够从出错的情况中恢复。Java 提供了一套机制来处理异常,包括 try-catch-finally 语句、throws 关键字等。
异常分类
Java 异常按照它们发生的原因分类,可以分为以下三个大类:
RuntimeException(运行时异常)
运行时异常表示程序本身的错误,这样的异常由程序本身引起:
ArithmeticException
:算术异常,当除数为零时出现此异常NullPointerException
:空指针异常,试图在引用对象时调用 null 值对象的方法或访问其属性ArrayIndexOutOfBoundsException
:数组下标越界异常,试图访问数组中不存在的元素NumberFormatException
:数据类型转换异常,试图把非数字字符串转换成具体数字时,出现此异常
示例代码
public class RuntimeExceptionExample {
public static void main(String[] args) {
// 算术异常
int result = 10 / 0;
// 空指针异常
String name = null;
System.out.println(name.length());
// 数组下标越界异常
int[] nums = new int[3];
int num = nums[3];
// 数据类型转换异常
String str = "hello";
int value = Integer.parseInt(str);
}
}
Checked Exception(可检查异常)
可检查异常是 Java 异常体系中的一类,这样的异常在编写代码时必须明确处理或声明抛出:
IOException
:输入输出异常,当输入输出操作失败或中断时出现此异常ClassNotFoundException
:类没有找到异常,当尝试使用类的时候,找不到相应的类或接口出现此异常InterruptedException
:线程中断异常,由于线程被中断引起此异常SQLException
:SQL 异常,执行 SQL 语句时出现此异常
示例代码
public class CheckedExceptionExample {
public static void main(String[] args) {
try {
File file = new File("test.txt");
FileInputStream fis = new FileInputStream(file);
System.out.println("文件内容:" + fis.read());
} catch (IOException e) {
e.printStackTrace();
}
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from users");
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("name: " + name + ", age: " + age);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Error(错误)
错误表示应用程序内部错误或 JVM 内部错误,由于它们通常表示无法继续执行应用程序,因此不应在代码中捕获 Error 异常。
OutOfMemoryError
:内存溢出错误,当 JVM 没有足够的内存来为对象分配空间时出现此错误。
示例代码
public class ErrorExample {
public static void main(String[] args) {
// 内存溢出错误
List<Object> list = new ArrayList<Object>();
while (true) {
list.add(new Object());
}
}
}
以上就是 Java 异常的概念和分类的完整攻略,希望对您有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java异常的概念和分类 - Python技术站