“天有不测风云,人有旦夕祸福。”程序代码皆如此。任何人不可能保证自己的程序永远正常运行,程序一旦出现问题。就要像日常生活中一样,需要及时处理。
//四则运算片段
if(运算符号错误){
报告错误
}else if(数字超出范围){
报告错误
}else if(被除数为0){
报告错误
}else{
正常运行
}
看似一切正常,但偶尔也会出现一些错误
Java语言在设计之初就考虑到异常处理,提出了错误和异常处理框架的方案,所有的异常都可以用一个类型表示,不同类型的异常对应于不同的子类异常,定义了异常处理的规范。
Throwable类是Java语言中所有错误和异常的超类,这意味着只要是错误或者异常,那么肯定是Throwable的两个子类的实例(Throwable类由于错误和异常内容过于庞大,所以设计人员将他们分开,设置为Error和Exception两个子类)
Error类负责错误,它指程序运行时遇到的硬件或操作系统的错误,如内存溢出、栈溢出、动态链接错误、虚拟机VM错误等,这些错误都是严重而致命,是依靠程序所不能解决的,是“不可抗拒的外力”因素造成的。所以程序一旦遭遇错误,一般开发人员是无法弄清这些错误的原因的,因此只能眼睁睁地看着程序崩溃。
Exception类专攻异常,一个异常是在程序执行期间发生的一个事件(exceptional event),它使正常的指令流中断,因而这个不幸事件应当被及时有效地捕获并处理。在一个方法中发生异常时,这个方法创建一个对象,并把它传递给运行时系统(runtime system),这个对象被称为“异常对象”,它包含了有关异常的信息,如异常的类型及其程序中发生时间时的状态。创建一个异常对象并把它传递给运行时系统,称为“抛出异常”。大多时候我们处理的异常都是Exception的子类,而非Exception本身,异常类的名字通常都是精心挑选的,可以很清楚地说明到底发生了什么事情,如ClassNotFoundException ArithmeticException等。
那么我们本次讲的是异常处理,所以我们今天先在这里罗列出常见的异常。
异常(英文)说明(汉字提示)
1.Exception
(异常层次结构的根类)
2.RuntimeException
(Java.lang包中多数异常的基类)
3.ArithmeticException
算术错误,如除数为0
4.ArrayIndexOutOfBoundsException
数组下标越界
5.IllegalArgumentException
方法收到非法参数
6.AWTException
AWT中的异常
7.ClassNotFoundException
不能加载所需的类
8.NumberFormatException
从字符串到数据类型的非法转换
9.SecurityException
试图违反安全性
10.NullPointerException
试图访问null对象引用
11.IOException
I/O异常的根类
12.FileNotFoundException
文件没有找到
13.EOFException
文件结束
14.NoSuchMethodException
请求的方法不存在
15.illegalAccessException
对类的访问被拒绝
16.InterruptedException
线程中断
17.SQLException
SQL数据库异常