您的位置:首页 > 编程语言 > Java开发

5、异常与调试

2016-07-11 21:55 344 查看
1.        Throwable(Error, Exception(IOException,RuntimeException)):

1)      派生于RuntimeException的异常包含以下几种情况:错误的类型转换;数组越界访问;访问空指针

2)      不是派生于RuntimeException的异常包括:试图在文件尾部后面读取数据;试图打开一个错误格式的URL;试图根据字符串查找Class对象,而这个对象不存在

3)      派生于RuntimeException或Error类的所有异常称为“未检查异常”,其他异常称为“已检查异常”

4)      注意:如果出现RuntimeException异常,就一定是你的问题

2.        四种情况会抛出异常:

1)      调用一个抛出已检查异常的方法

2)      在程序过程中发现错误,并利用throws语句抛出一个已检查异常

3)      程序出现错误,如越界等未检查异常

4)      Java虚拟机和运行时库出现的内部异常

3.        “异常规范”:如果一个方法可能抛出多个已检查异常,就必须在方法首部列出所有异常,并用逗号隔开;不需要声明java内部错误,就是从Error继承来的异常,我们对他们没有控制力;也不应该声明从RuntimeException继承的未检查异常。总之,一个方法必须声明所有可能的已检查异常,未检查异常要么不可控制(Error),要么应该避免他们发生(RuntimeException)

4.        捕获异常:程序将跳过try语句块中的其余代码,继续执行catch字句中的处理器代码;如果try语句中没有抛出异常,那么程序将跳过catch语句;如果任何代码跑出了一个在catch字句中没有声明的异常类型,那么该方法立即退出

5.        finally子句:(无论try语句块是否遇到异常,finally子句都会被执行)

1)      代码没有抛出异常,程序会先执行try中全部代码,然后执行finally子句的代码,随后继续执行try语句块后面的代码

2)      代码抛出一个在catch中捕获的异常,跳过try中剩余的代码,转而执行与该异常匹配的catch子句中的代码,最后执行finally子句中的代码;如果catch子句中没有抛出异常,程序将执行try语句块之后的第一条语句;如果catch子句抛出一个异常,异常将被抛回程序调用者处

3)      代码抛出一个异常,但是异常不是由catch子句捕获,程序将跳过try语句块中剩余代码,然后执行finally子句中的代码,并将异常抛给方法的调用者
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 异常 调试