java异常abc...
时间:2010-08-13 来源:xiogjie_67
一、什么是异常呢?
异常是java程序在运行期产生的错误。
二、异常会在哪些情况下产生?
总的来说:在现实世界中充满了不良的数据和有问题的代码,这些都属于异常情况。
通常在什么情况下产生呢?
1、可能造成程序崩溃的错误输入
2、设备错误
3、物理限制
4、代码错误
三、发生异常了,我们该如何来处理呢?也就是说,在java里面是如何来处理异常的呢?
Java使用了一种称为异常处理的错误捕获机制进行处理。
四、什么是异常处理呢?
异常处理就是用于处理程序错误的一种机制。比如说,访问数组时,给定下标超过数组下标的范围,这就是一种错误,就需要对程序代码进行修改,或者是对这种异常进行捕获。
五、异常对象是如何获取到值的呢?
什么意思呢?就是我们经常做异常处理的时候,经常是catch(Exception e){statement}那么,这里面的e这个对象是怎么获取到值的呢?
在java程序运行的时候,如果遇到了异常,java虚拟机即JVM会查看所有的catch语句块,找到与当前异常相匹配的异常处理类,或者是异常处理类的父类,如果JVM找到了之后,它就会自动去实例化这个异常类对象,在这个地方指的是我给出的e,当这个对象被实例化之后,我就当然可以用这个对象去调用这个异常处理类的方法,对当前遇到的异常进行处理了。
上面说的这一堆话就是再说异常是怎么捕获的。
五、异常可以分为哪几类?
简单分:
1、未检查异常
2、必查异常
什么是未检查异常呢?
就是说这种异常没必要让程序员去处理,有些时候,这种异常程序员也没法处理,比如说计算机突然断电,而我的程序还在运行,这种突如其来的动作,程序员是很难在程序中用代码去处理这种情况的,因为我并不知道计算机它什么时候断电啊。所以说,这种异常还是交给JVM去搞定,没必要由我们这些程序员去搞定。我想这就是未检查的意思吧,也就是说,没必要由我们程序员去处理的异常情况。
什么是必查异常呢?
必查异常,从字面上看就是必须检查的异常,把“检查”换成“处理”,也就是必须处理的异常,由谁来处理呢,当然是人啊,不可能是所有人,当然就是程序员了。也就是说必须由程序员处理的异常就是必查异常。
例如:
public static void main(String [] args){
try{
String [] s = new String[]{"abc","def","ghi"};
System.out.print(s[4]);
}catch(ArrayIndexOutOfBoundsException ex){
ex.printStackTrace();
System.out.println("数组下标越界了!");
}
}
程序代码运行的过程中,会出现下标越界异常,程序员是有能力对它进行处理的,也就是说必查异常就是程序员能够处理的程序错误。
五、为什么要使用自定义异常?
因为在程序中,可能会遇到任何标准异常类都没有能够充分描述清楚的问题,这个时候,我们就需要自己定义异常来描述问题。
六、如何自定义我们的异常呢?
只需要让我们自己定义的异常类继承Exception或它的子类即可。
七、异常捕获是怎么回事儿?
如果异常发生时没有在任何地方进行捕获,那么程序就会终止,并在控制台上打印出异常信息,包括异常类型与堆栈类容。
如何来捕获异常呢?
必须设置try/catch语句块。
如果在try语句块中的任何代码抛出了一个在catch子句中声明那个异常,那么:
1、程序会跳过try语句块其余的代码。
2、程序将执行catch子句中异常处理类里面的代码
3、如果try里面的代码没有抛出任何异常,那么程序将会跳过catch子句
4、如果方法中的任何代码抛出了一个在catch子句中没有声明的异常类型,那么就会立刻退出这个方法。
八、对抛出异常的方法在重写时应该注意哪些问题?
当重写一个抛出异常的方法时,子类抛出的异常类型必须与父类的异常类型一样,或者该异常类型的子类。