Java 异常处理

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();

      System.out.println("The error is: " + msg);
    }

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

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