Exception和Error 有什么区别

简介: Exception和Error 有什么区别

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

  • Error 类通常指的是 Java 运行时系统内部错误或者资源耗尽错误。应用程序不会抛出该类对象,如果出现这样的错误,除了告知用户,剩下的就是尽量使得程序安全的终止。
  • 常见的 Error 有:


NoClassDefFoundError ,VirtualMachineError, OutOfMemoryError,StackOverflowError
  • Exception 又有两个分支,一个是运行时异常, RuntimeException ,一个是 CheckedException 。
  • RuntimeException指的是


NullPointException ,ClassCastException ,ClassNotFoundException


  • RuntimeException 一定是程序的错误。
  • CheckedException 指的是 I/O 错误导致的


IOException 、SQLException
  • checkedException 一般是外部错误,这个异常发生在编译阶段。Java 编译器会强制去捕获此类异常。一般会要求把这段可能出现的异常程序进行 try catch。


640.jpg


曾经开发过程中有一同学就遇到这样的问题,程序跑的好好的,并且程序进行 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"); //实例化异常
    }
}


相关文章
|
自然语言处理 API 索引
ElasticSearch实战教程PostMan版(超级详细版)
ElasticSearch实战教程PostMan版(超级详细版)
ElasticSearch实战教程PostMan版(超级详细版)
|
7月前
|
安全 架构师 云计算
玄鹿网络 | 中小企业如何借势互联网,打造强势网络品牌?
玄鹿网络在互联网+时代,中小企业面临机遇与挑战,品牌成为企业生存发展的核心灵魂。玄鹿网络通过网络营销助力中小企业塑造品牌形象,其中问答营销可树立良好口碑,B2B网站推广能获取高质量流量,建立企业官网则是展示品牌的窗口。阿里云建站产品如【云·速成美站】和【云·企业官网】,提供快速、稳定、安全的建站服务,助力企业打造独特网络名片,在竞争中脱颖而出。
玄鹿网络 | 中小企业如何借势互联网,打造强势网络品牌?
|
Python
深入理解Python装饰器:从入门到实践####
本文旨在通过简明扼要的方式,为读者揭开Python装饰器的神秘面纱,从基本概念、工作原理到实际应用场景进行全面解析。不同于常规的摘要仅概述内容概要,本文将直接以一段精炼代码示例开篇,展示装饰器如何优雅地增强函数功能,激发读者探索兴趣,随后深入探讨其背后的机制与高级用法。 ####
168 11
|
小程序
知道这些,商标申请更易通过!
知道这些,商标申请更易通过!
547 1
知道这些,商标申请更易通过!
|
Java 关系型数据库 MySQL
jsp 宠物网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
jsp 宠物网站系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。
173 0
jsp 宠物网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
|
监控 网络协议 中间件
带你读《Elastic Stack 实战手册》之52:——3.5.11.Uptime (下)
带你读《Elastic Stack 实战手册》之52:——3.5.11.Uptime (下)
198 0
|
1天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。