首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

运行时错误和非运行时错误例子

2012-12-27 
运行时异常和非运行时异常例子点击右边红色标题查看本文完整版:运行时异常和非运行时异常例子? 运行时异常

运行时异常和非运行时异常例子
点击右边红色标题查看本文完整版:运行时异常和非运行时异常例子

? 运行时异常和非运行时异常例子:

? 我写一个类如下:
? import java.io.*;
? public abstract class MyLayer
? {
? ...
? void someFun()
? {
? if(condtion)
? {
? throw new IllegalArgumentException();在这里,我如果抛出 IOException 就出错了
? }
? }
? ...
?
? }
?
? 如上,我如果抛出 IllegalArgumentException 异常,是 OK 的,可是如果抛出 IOException ,就报错说 “unhandled exception type IOException”,这时,需要在类名后加上
? public abstract class throws IOException 才能改正这个错误
?
? 我疑惑的是,为什么 IllegalArgumentException 可以直接抛出,而不需要在类名后声明抛出的异常呢
?
? 如果一个class 写成这样
? public class ClassA
? 后面不声明异常,是不是表示该类不抛异常,如果在改类的方法中想抛出异常,编译就会报错
? 可是如果是这样的话,我开始这段代码又怎么会对呢
? 不解
?

------解决方法--------------------
IllegalArgumentException是运行期异常,是RunntimeException的子类,没有强制要求catch,但是IOException是受控异常,必须在程序里边显式的catch或者throw
------解决方法--------------------
IllegalArgumentException 是运行时异常,不需要在使用的地方加声明;IOException是编译时异常,需要在使用的地方加上声明。但你的做法有误,你这样:
? void someFun() throws IOException
? {
? if(condtion)
? {
? throw new IOException();
? }
? }
?
? 就OK了
------解决方法--------------------
IllegalArgumentException 是一个运行时异常,继承自RuntimeException
? RuntimeException这种异常在程序正常运行时时不会发生的,因此这类异常不需要在程序中捕获
? NullPointerException也属于这种异常
? IOException 是非运行时异常,这类异常需要在程序中捕获
? 如果不捕获则需要将异常抛出,交给程序的上一层处理
? 我通常是这样写在方法名的后面,表示这个方法会抛出这个异常
? void someFun() throws IOException
? {
? if(condtion)
? {
? throw new IOException();
? }
? }???
?

    

热点排行