异常是在没有定义正常执行路径时在Java程序的执行期间可能出现的条件。Java通过将执行操作的代码与处理错误的代码分离来处理错误。
当发生异常时,Java会创建一个包含有关异常的所有信息的对象,并将其传递给相应的异常处理代码。有关异常的信息包括异常的类型,发生异常的代码中的行号等。
要处理异常,请将代码放在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.