关于异常

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

关于异常

异常的处理思想是:你尝试(try)执行一段代码,捕获(catch)所有可能抛出的异常,最后(finally)作一些清理工作。

throws是异常的声明,它置于方法的定义处,后面不能跟任何语句,只能是异常类型;throw是异常的抛出,它置于方法体内,后面跟一个要抛出的异常的实例:例如:throw new IllegalValueException();括号中可以写下一些字符串信息之类的东西。

throw抛出的异常应该是throws中声明的异常或是这些异常的子集,但对于非检测异常无此限制。

异常分为可检测异常和非检测异常,当调用声明为可检测异常时,调用该方法的块一定要捕获异常,或者在方法的定义语句中用throws声明这个异常,但要遵循上面说的异常的子集关系.否则出错。

可以有多个catch块,每一个都指定自己的常类型。但有顺序要求,从想捕获的特定异常到想捕获的异常的超类。如果把带有Execption类型的catch块放在带有IOExecption类型的catch块前面会导致编译时错误。

try块自身里面不能再用try。try后要么跟catch,要么跟finally,或者两者都有,便不能什么都没有。

无论何时,只要有finally语句,该语句就被执行。如果遇到return;则finally语句块仍然会执行,但是紧接在finally块之后的语句将不会被执行!如果遇到System.exit(0);则finaly语句块和紧接在finally块之后的语句将不会被执行!

对于可检测异常,子类中覆盖的方法只能抛出超类方法抛出异常的子集,也可以不抛出任何异常。但对于非检测异常RuntimeException,则不会受这些约束,它们可以被随时抛出,也不受范围限制。

如果当继承的子类没有声明异常时,子类中的一个实例被声明为超类的类型时,这时再调用子类没有声明异常的方法,而用了catch,程序也会通过。

try和catch中的异常必须是有关系的,不然会出错。

throws 和throw不必一定成对出现

如果在方法中throw了一个异常,那么在该方法的声明之处一定要有throws这个东东,一般情况下throw是放在catch块里,在处理完后,然后throw,让调用该方法的方法能知道异常,使得程序更健壮

常见的异常:

检测异常:

ClassNotFoundException;

IOException;

FileNotFoundException;

IllegalAccessException;

InterruptedException;

MalformedURLException;

非检测异常:

ArithmeticException;

ArrayindexOutOfBoundsException;

ArrayStoreException;

ClassCastException;

EmptyStackException;

IllegalArgumentException;

InvalidParameterException;

NullPointerException;

NumberFormatException;

StringIndexOutOfBoundsException;

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航