请写出 5 种常见到的runtime exception。
在 Java 中,运行时异常(Runtime Exception)是指在程序运行过程中可能会发生的异常,这些异常通常是由于程序逻辑错误引起的。以下是五种常见的运行时异常及其简要说明:
NullPointerException
null
的对象的属性或方法时,会抛出此异常。String str = null;
int length = str.length(); // 这里会抛出 NullPointerException
ArrayIndexOutOfBoundsException
int[] arr = new int[5];
int value = arr[10]; // 这里会抛出 ArrayIndexOutOfBoundsException
ClassCastException
Object obj = new Integer(100);
String str = (String) obj; // 这里会抛出 ClassCastException
IllegalArgumentException
public void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("年龄不能为负数");
}
}
ArithmeticException
int result = 10 / 0; // 这里会抛出 ArithmeticException
虽然运行时异常通常不需要强制捕获,但在某些情况下,您可能希望通过适当的异常处理来提高程序的健壮性。以下是一个简单的示例,展示如何捕获和处理这些异常:
public class ExceptionExample {
public static void main(String[] args) {
try {
// 示例 1: NullPointerException
String str = null;
System.out.println(str.length());
// 示例 2: ArrayIndexOutOfBoundsException
int[] arr = new int[5];
System.out.println(arr[10]);
// 示例 3: ClassCastException
Object obj = new Integer(100);
String str2 = (String) obj;
// 示例 4: IllegalArgumentException
setAge(-1);
// 示例 5: ArithmeticException
int result = 10 / 0;
} catch (NullPointerException e) {
System.out.println("捕获到 NullPointerException: " + e.getMessage());
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("捕获到 ArrayIndexOutOfBoundsException: " + e.getMessage());
} catch (ClassCastException e) {
System.out.println("捕获到 ClassCastException: " + e.getMessage());
} catch (IllegalArgumentException e) {
System.out.println("捕获到 IllegalArgumentException: " + e.getMessage());
} catch (ArithmeticException e) {
System.out.println("捕获到 ArithmeticException: " + e.getMessage());
} catch (Exception e) {
System.out.println("捕获到其他异常: " + e.getMessage());
}
}
public static void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("年龄不能为负数");
}
}
}
在这个示例中,我们使用 try-catch
块来捕获并处理不同类型的运行时异常。通过这种方式,程序可以在遇到异常时继续运行,而不是直接崩溃。