Java中通过异常类的形式对非正常情况进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理。
public class Exception {
public static void main(String[] args) {
int result = divide(4,0);//调用divide()方法
System.out.println(result);
}
//通过方法实现两个整数相除
public static int divide(int x, int y){
int result = x/y;//定义一个变量result记录两个数相除的结果
return result;//将结果返回
}
}
运行结果如下:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Exception.divide(Exception.java:8)
at Exception.main(Exception.java:3)
程序发生了算数异常(ArithmeticException),这个异常是由于代码第三行调用divide()方法时传入了参数0,而在divide()方法中,运算时出现了除以0的情况,在这个异常发生后,程序立刻结束,无法继续向下执行。
算数异常(ArithmeticException)是Java异常类中的一种,Java中提供了大量的异常类,这些类都继承自java.lang.Throwable类。如下图:
Throwable有两个直接子类Error和Exception,其中Error代表程序中产生的错误,Exception代表程序中产生的异常。
-
Error类称为错误类,它表示Java运行时产生的系统内部错误或资源耗尽的错误,是比较严重的,仅靠修改程序本身是不能恢复执行的。举一个生活中的例子,在盖楼的过程中因偷工减料,导致大楼坍塌,这就相当于一个Error。使用java命令去运行一个不存在的类就会出现 Error错误。
-
Exception类称为异常类,它表示程序本身可以处理的错误。在开发 Java程序中进行的异常处理都是针对Exception 类及其子类。在Exception类的众多子类中有一个特殊的RuntimeException类,该类及其子类用于表示运行时异常。除了此类,Exception类下所有其他的子类都用于表示编译时异常。
Throwable类中的常用方法如下表
方法声明 | 功能描述 |
---|---|
String getMessage() | 返回此throwable的详细消息字符串 |
void printStackTrace() | 将此throwable及其追踪输出至标准错误流 |
void printStackTrace(PrintStream s) | 将此throwable及其追踪输出至指定的输出流 |
上表方法均用于获取异常信息,由于Error和Throwable继承自Throwable类,所以它们都拥有这些方法。