在Java中,异常是一种用于处理程序运行过程中错误的机制。Java 异常分为两类:Checked Exception 和 Unchecked Exception。其中,Checked Exception需要在方法的声明中明确地抛出并处理,而Unchecked Exception则不需要明确地抛出和处理,它们的处理交给JVM来完成。
Java中的异常继承体系如下所示:
Throwable
|-- Error
| |-- AssertionError
| |-- OutOfMemoryError
| |-- StackOverflowError
| |-- ...
|
|-- Exception
|-- RuntimeException
| |-- NullPointerException
| |-- IllegalArgumentException
| |-- IndexOutOfBoundsException
| |-- ArithmeticException
| |-- ...
|
|-- Checked Exception
|-- IOException
|-- SQLException
|-- ...
常见的运行时异常有:NullPointerException、IllegalArgumentException、IndexOutOfBoundsException、ArithmeticException等。
public class ExceptionDemo {
public static void main(String[] args) {
// NullPointerException
String str = null;
System.out.println(str.length());
// IllegalArgumentException
int age = -1;
if (age < 0) {
throw new IllegalArgumentException("Age cannot be negative.");
}
// IndexOutOfBoundsException
int[] arr = {1, 2, 3};
System.out.println(arr[3]);
// ArithmeticException
int a = 10, b = 0;
int c = a / b;
}
}
接下来,我们通过一段代码来加以说明:
上面的代码会依次抛出上述四种运行时异常。需要注意的是,如果这些异常没有被捕获并处理,程序将会中止。因此,我们需要在代码中添加必要的异常处理机制来保证程序的稳定性和健壮性。
好的,除了上述常见的运行时异常之外,Java中还有一些其他的运行时异常,比如:
1.ClassCastException
类型转换异常,通常在将一个对象转换成另一个不兼容的类型时抛出。
2.ArrayStoreException
数组存储异常,通常在试图将一个不兼容类型的对象存储到数组中时抛出。
3.NumberFormatException
数字格式异常,通常在将一个非数字字符串转换成数字时抛出。
4.UnsupportedOperationException
不支持操作异常,通常在试图对不支持的操作进行调用时抛出。
下面是一个包含上述异常的代码演示:
public class MoreExceptionDemo {
public static void main(String[] args) {
// ClassCastException
Object obj = "Hello";
Integer num = (Integer) obj;
// ArrayStoreException
Object[] arr = new String[3];
arr[0] = 10;
// NumberFormatException
String str = "abc";
int n = Integer.parseInt(str);
// UnsupportedOperationException
List<String> list = Arrays.asList("apple", "banana", "orange");
list.add("grape");
}
}
上述代码会依次抛出上述四种运行时异常。需要注意的是,运行时异常通常由程序员自己的错误导致,因此在编写代码时要注意类型转换、数组操作、数字格式等问题,避免引发异常。