通常抛出异常后,还需要将异常捕获。使用try和catch语句块来捕获异常,有时候还会用到finally。
对于上述三个关键词所构成的语句块,try语句块是必不可少的,catch和finally语句块可以根据情况选择其一或者全选。你可以把可能发生错误或出现问题的语句放到try语句块中,将异常发生后要执行的语句放到catch语句块中,而finally语句块里面放置的语句,不管异常是否发生,它们都会被执行。
自定义一个异常类非常简单,只需要让它继承 Exception 或其子类就行。在自定义异常类的时候,建议同时提供无参构造方法和带字符串参数的构造方法,后者可以为你在调试时提供更加详细的信息。
百闻不如一见,下面我们尝试自定义一个算术异常类。
在/home/project/目录下创建一个MyAriException类。
主要的代码如下:
// MyAriException.javapublic class MyAriException extends ArithmeticException { //自定义异常类,该类继承自ArithmeticException public MyAriException() { } //实现默认的无参构造方法 public MyAriException(String msg) { super(msg); } //实现可以自定义输出信息的构造方法,将待输出信息作为参数传入即可}添加一个ExceptionTest类作为测试用,在该类的main()方法中,可以尝试使用throw抛出自定义的异常。
代码片段如下:
// ExceptionTest.javaimport java.util.Arrays;public class ExceptionTest { public static void main(String[] args) { int[] array = new int[5]; //声明一个长度为5的数组 Arrays.fill(array, 5); //将数组中的所有元素赋值为5 for (int i = 4; i > -1; i--) { //使用for循环逆序遍历整个数组,i每次递减 if (i == 0) { // 如果i除以了0,就使用带异常信息的构造方法抛出异常 throw new MyAriException("There is an exception occured."); } System.out.println("array[" + i + "] / " + i + " = " + array[i] / i); // 如果i没有除以0,就输出此结果 } }}