码迷,mamicode.com
首页 > 其他好文 > 详细

关于异常

时间:2015-09-10 01:44:50      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

1.RuntimeException,也就是运行时异常,表示你的代码本身存在BUG,比如你提到的ArrayIndexOutOfBoundsException,数组下标越界,这个属于代码有问题,数组定义的长度不够实际使用,不处理肯定会报错,如果你操作某个模块发现能正常运行,那只是因为代码还没跑到这个错误的地方而已。。控制台一旦报RuntimeException,就必须要处理。。没有例外的。而且,处理RuntimeException,不是try-catch能解决的。。try-catch在这里使用毫无意义。程序运行到此处终止

2.不是RuntimeException,就是编译时异常,异常只有这两种了。比如你在处理文件流时的I/O问题,就属于编译时异常。这个时候用thr{}catch 来捕获或者 throws即可。程序继续运行

3.error,eclipse代码里出现红叉叉。
Unchecked Exception: 
a. 指的是程序的瑕疵或逻辑错误,并且在运行时无法恢复。 
b. 包括Error与RuntimeException及其子类,如:OutOfMemoryError, UndeclaredThrowableException, IllegalArgumentException, IllegalMonitorStateException, NullPointerException, IllegalStateException, IndexOutOfBoundsException等。 
c. 语法上不需要声明抛出异常。就算捕获了也没用 

Checked Exception: 
a. 代表程序不能直接控制的无效外界情况(如用户输入,数据库问题,网络异常,文件丢失等) 
b. 除了Error和RuntimeException及其子类之外,如:ClassNotFoundException, NamingException, ServletException, SQLException, IOException等。 
c. 需要try catch处理或throws声明抛出异常。 
 

 Java代码  

public class TestException {  
    public void first() throws GenericException {  
        throw new GenericException("Generic exception"); // Checked Exception需要显式声明抛出异常或者try catch处理  
    }  
     
    public void second(String msg) {  
        if (msg == null)  
            throw new NullPointerException("Msg is null"); // Unchecked Exception语法上不需要处理  
    }  
     
    public void third() throws GenericException {  
        first(); // 调用有Checked Exception抛出的方法也需要try catch或声明抛出异常  
    }  
 
    public static void main(String[] args) {  
        TestException test = new TestException();  
        try {  
            test.first();  
        } catch (GenericException e) {  
            e.printStackTrace();  
        }  
         
        test.second(null);  
    }  
}

关于异常

标签:

原文地址:http://www.cnblogs.com/wangsong/p/4796410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!