Java中的异常处理是非常重要的,它可以让程序在发生错误时有一个可控的流程,从而让程序更加健壮。Java中的异常可以分为两种,一种是运行时异常,另一种是非运行时异常。运行时异常是指程序运行时抛出的异常,比如数组下标越界、空指针引用等,这些异常在程序运行时可能会出现,需要程序员使用try-catch语句进行捕捉。非运行时异常是指程序编译时就已经确定的异常,比如文件不存在、网络中断等,这些异常需要使用throws或throw语句进行抛出,由调用者进行处理。
public class MyException extends Exception { public MyException(String message) { super(message); } } public class Test { public static void main(String[] args) { try { throw new MyException("发生了自定义异常!"); } catch (MyException e) { System.out.println(e.getMessage()); } } }
上面的代码演示了自定义一个异常类MyException,并在main函数中抛出并捕捉自定义异常。抛出异常时使用throw语句,捕捉异常时使用try-catch语句。catch语句中括号中的类型表示捕捉哪种类型的异常,如果捕捉到这种类型的异常,则执行catch块中的代码。如果不捕捉异常,则这个异常将会被传递到上一层级的方法或主函数中。
在Java中,还有一个finally语句用于定义无论是否发生异常都要执行的代码,比如资源释放。finally块内的代码会在try或catch块中的代码执行完毕后执行。
public class Test { public static void main(String[] args) { try { int num = 10 / 0; } catch (ArithmeticException e) { System.out.println("发生了被0除的异常!"); } finally { System.out.println("finally语句块!"); } } }
上面的代码演示了使用try-catch-finally语句块处理异常。如果没有try语句块,finally块也会被执行,如果有try语句块,finally块会在try块或catch块中代码执行完毕后执行。finally块可以用于释放资源,比如关闭文件、数据库连接等。