关于Java异常处理机制深入理解(2)

Error 定义了在通常环境下不希望被程序捕获的异常。Error 类型的异常用于 Java 运行时由系统显示与运行时系统本身有关的错误。堆栈溢出是这种错误的一例。

本章不讨论关于 Error 类型的异常处理,因为它们通常是灾难性的致命错误,不是程序可以控制的。本章接下来的内容将讨论 Exception 类型的异常处理。

运行时异常都是 RuntimeException 类及其子类异常,如 NullPointerException、IndexOutOfBoundsException 等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能避免这类异常的发生。

非运行时异常是指 RuntimeException 以外的异常,类型上都属于 Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如 IOException、ClassNotFoundException 等以及用户自定义的 Exception 异常,一般情况下不自定义检查异常。表 1 列出了一些常见的异常类型及它们的作用。

表1 Java中常见的异常类型 异常类型说明
Exception   异常层次结构的根类  
RuntimeException   运行时异常,多数 java.lang 异常的根类  
ArithmeticException   算术谱误异常,如以零做除数  
ArraylndexOutOfBoundException   数组大小小于或大于实际的数组大小  
NullPointerException   尝试访问 null 对象成员,空指针异常  
ClassNotFoundException   不能加载所需的类  
NumberF ormatException   数字转化格式异常,比如字符串到 float 型数字的转换无效  
IOException   I/O 异常的根类  
F ileN otF oundException   找不到文件  
EOFException   文件结束  
InterruptedException   线程中断  
IllegalArgumentException   方法接收到非法参数  
ClassCastException   类型转换异常  
SQLException   操作数据库异常  

在java应用程序中,有两种异常处理机制:抛出异常、捕获异常。

声明异常抛出异常:

  当一个方法出现错误引发异常时,方法创建异常对象交付运行时系统,异常对象中包含了异常类型和异常出现时程序的状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

  可以通过 throws 关键字在方法上声明该方法要拋出的异常,然后在方法内部通过 throw 拋出异常对象。本节详细介绍在 Java 中如何声明异常和拋出异常。

throws 关键字和 throw 关键字在使用上的几点区别如下:

throws 用来声明一个方法可能抛出的所有异常信息,throw 则是指拋出的一个具体的异常类型。

通常在一个方法(类)的声明处通过 throws 声明方法(类)可能拋出的异常信息,而在方法(类)内部通过 throw 声明一个具体的异常信息。

throws 通常不用显示地捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法; throw 则需要用户自己捕获相关的异常,而后再对其进行相关包装,最后将包装后的异常信息抛出。

throws 声明异常

  当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部声明这个异常,以便将该异常传递到方法的外部进行处理。可以使用 throws 关键字在方法的头部声明一个异常,其具体格式如下:

returnType method_name(paramList) throws Exception 1,Exception2,…{…}

其中,returnType 表示返回值类型,method_name 表示方法名,Exception 1,Exception2,… 表示异常类。如果有多个异常类,它们之间用逗号分隔。这些异常类可以是方法中调用了可能拋出异常的方法而产生的异常,也可以是方法体中生成并拋出的异常。

例 1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/66f0a15c4b0a272cf7e22457f6343862.html