Java异常处理教程

Java异常处理教程

异常是在没有定义正常执行路径时在Java程序的执行期间可能出现的条件。Java通过将执行操作的代码与处理错误的代码分离来处理错误。

当发生异常时,Java会创建一个包含有关异常的所有信息的对象,并将其传递给相应的异常处理代码。有关异常的信息包括异常的类型,发生异常的代码中的行号等。

try-catch块

要处理异常,请将代码放在try块中。 try块如下所示:

try  {
    // Code for the try block 
    // 可能有异常的代码
}

try块以关键字try开头,后面是开括号和结束括号。try块的代码放在开口和关闭大括号内。try块本身不能使用。

它必须后跟一个或多个catch块,或一个finally块,或两者的组合。要处理可能在try块中抛出的异常,请使用catch块。一个catch块可以用于处理多种类型的异常。catch块的语法与方法的语法相似。

catch (ExceptionClassName parameterName)   {
    // Exception handling  code
}

catch块的声明就像一个方法声明。它从关键字catch开始,后面跟一对括号。在括号中,它声明了一个参数。

参数类型是应该捕获的异常类的名称。parameterName是用户给定的名称。括号后面是开口括号和结束括号。异常处理代码放在大括号中。当抛出异常时,异常对象的引用将复制到parameterName。可以使用parameterName从异常对象中获取信息。将一个或多个catch块与try块关联。
try-catch块的一般语法如下。

try  {
    // Your code  that may throw  an  exception
}
catch  (ExceptionClass1 e1){
    // Handle  exception of  ExceptionClass1 type
}
catch  (ExceptionClass2 e2){
    // Handle  exception of  ExceptionClass2 type
}
catch  (ExceptionClass3 e3){
    // Handle  exception of  ExceptionClass3 type
}

示例

下面的代码显示了如何处理除零异常。

public class Main {
  public static void main(String[] args) {
    int x = 10, y = 0, z;
    try {
      z = x / y;
      System.out.println("z = " + z);
    } catch (ArithmeticException e) {
      String msg = e.getMessage();
      e.printStackTrace();
      System.out.println("The error is: " + msg);
    }

    System.out.println("The end.");
  }
}

上面的代码生成以下结果。

java.lang.ArithmeticException: / by zero
    at Main.main(Main.java:5)
The error is: / by zero
The end.