在Java中,异常处理是通过使用try-catch
块来实现的。Java的异常分为两类:编译时异常(checked exception)和运行时异常(unchecked exception)。以下是一个简单的Java异常处理的例子:
public class ExceptionHandlingExample {
public static void main(String[] args) {
try {
//可能引发异常的代码块
int result = divide(10, 0);
System.out.println("Result: " + result);
} catch (
ArithmeticException e) {
//捕获ArithmeticException异常
System.out.println("Error: Division by zero");
e.printStackTrace();
} finally {
//不管是否有异常,都会执行的代码块
System.out.println("Finally block executed");
}
}
public static int divide(int dividend, int divisor) {
//可能引发异常的方法
return dividend / divisor;
}
}
在上述代码中:
try
块包含可能引发异常的代码。- 如果在
try
块中的代码引发了ArithmeticException
异常(例如,除法运算中的除数为0),则控制流会转到catch
块,捕获并处理异常。 catch
块中的代码处理异常,可以打印错误信息、记录日志等。finally
块中的代码是无论是否有异常都会执行的,通常用于释放资源或执行清理操作。
Java还支持多个catch
块,以处理不同类型的异常。如果异常类型没有匹配的catch
块,异常将被传递到上一级调用栈,直到找到匹配的catch
块或程序终止。
此外,Java还提供了throws
关键字用于声明一个方法可能抛出的异常,以便通知调用该方法的代码处理异常或将其传递给上一级。
public class Example {
public static void main(String[] args) {
try {
//调用可能抛出异常的方法
riskyMethod();
} catch (CustomException e) {
//处理自定义异常
e.printStackTrace();
}
}
public static void riskyMethod() throws CustomException {
//可能抛出自定义异常的方法
throw new CustomException("This is a custom exception");
}
}
//自定义异常类
class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
在上述例子中,riskyMethod
方法声明了可能抛出CustomException
异常,而在调用该方法的地方使用try-catch
块捕获并处理了这个自定义异常。