首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Exception和Error 有什么区别

Exception和Error 有什么区别

作者头像
王小明_HIT
发布2019-10-15 00:17:40
1.6K0
发布2019-10-15 00:17:40
举报
文章被收录于专栏:程序员奇点程序员奇点

这里考察的是 Java 异常处理机制

  • Error 类通常指的是 Java 运行时系统内部错误或者资源耗尽错误。应用程序不会抛出该类对象,如果出现这样的错误,除了告知用户,剩下的就是尽量使得程序安全的终止。
  • 常见的 Error 有:
NoClassDefFoundError ,VirtualMachineError, OutOfMemoryError,StackOverflowError
  • Exception 又有两个分支,一个是运行时异常, RuntimeException ,一个是 CheckedException 。
  • RuntimeException指的是
NullPointException ,ClassCastException ,ClassNotFoundException
  • RuntimeException 一定是程序的错误。
  • CheckedException 指的是 I/O 错误导致的
IOException 、SQLException

曾经开发过程中有一同学就遇到这样的问题,程序跑的好好的,并且程序进行 try catch 了,但是程序再往下执行时就出错。但是一直在想,都Catch 住了啊,为啥没看到报错日志呢,是不是程序没有运行,后来才发现其实这个就是忘记了 Error 这个出异常了,但是没有Catch。

简单的说是 Error 和 Exception 都继承了 Throwable。

Error 是程序无法处理的错误,出现这个错误,只能终止程序或者修改代码。Exception 是程序可以处理的异常,捕获后可恢复。

import java.util.ArrayList;
import java.util.List;

public class TestError {

    public static void main(String args[]){

        List<User> users = new ArrayList<User>(2); // 为啥两次就是为了打出NoClassDefFoundError

        for(int i=0; i<2; i++){
            try{
                users.add(new User(String.valueOf(0))); //will throw NoClassDefFoundError
            }catch(Error e){
                System.out.println("Catch Error "+e);
            }catch(Exception t){
                System.out.println("Catch Exception");
                t.printStackTrace();
            }
        }

        try{
            divsion(1,0);
        }catch(Error e){
            System.out.println("Catch Error "+e);
        }catch(Exception t){
            System.out.println("Catch Exception"+t);
//            t.printStackTrace();
        }
    }

    public static int divsion(int i, int j) throws Exception {
        int k = i / j;
        return k;
    }
}

class User{
    private static String USER_ID =  getUserId();

    public User(String id){
        this.USER_ID = id;
    }
    private static String getUserId() {
        throw new RuntimeException("UserId Not found"); //实例化异常
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员奇点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档