Java Exception和Error的区别

Java中异常的抽象类是Throwable,在此基础上,派生出两大类:Error和Exception。

Error是程序中的严重错误,不应该用try…catch包括。Javadoc的说明如下:

An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions.

常见的Error有:AssertionError、OutOfMemoryError、StackOverflowError。

Exception分两类:Checked Exception和Unchecked Exception。

Unchecked Exception的基类是RuntimeException,所有继承自RuntimeException的Exception都属于Unchecked Exception, 如:NullPointerException、ArrayIndexOutOfBoundsException。

Checked Exception直接继承自Exception,所有不继承RuntimeException的Exception都属于Checked Exception,如:FileNotFoundException。

Checked Exception和Unchecked Exception都可以用try…catch包含。其中,Checked Exception在编译时检查是否有想要的catch处理,因此必要有try…catch包含,或者方法签名处抛出相应的异常。而Unchecked Exception在运行时判断,所以不一定要try…catch包含。而且,Unchecked Exception往往是程序本身存在bug,一般不catch这样的错误。

备注1:

在try中执行return语句,依然会执行finally语句块,除非在try语句中结束JVM进程(system.exit(0))

public class Hello{
    public static void main(String[] args){
        try{
            System.out.println("in try");
            return;
        }catch(Exception e){

        }finally{
            System.out.println("finally");
        }
        System.out.println("end");
    }
}
//输出
in try
finally

备注2:

不要在finally语句块调用return,否则的话,在try语句块中抛出的异常无法被调用者捕获,如下:

    try {
      doSomething();
      System.out.println("No Exception Caught!");
    } catch (RuntimeException e) {
      System.out.println("got it.");
    }
  }

  public static void doSomething() {
    try {
      throw new RuntimeException();
    } finally {
      return;
    }
  }
//输出
No Exception Caught!

备注3:

throw与throws的区别:

throw是在语句块,程序员主动抛出一个异常。

throws是在方法的签名处,说明该方法可能抛出的异常。当有多个异常抛出时,用逗号分隔。

备注4:

从JDK7开始,同一个try对应的多个catch可以写在一起。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-21 00:27:01

Java Exception和Error的区别的相关文章

JAVA Exception 和 Error 的理解

结构: Error类和Exception类都继承自Throwable类. Error的继承关系: java.lang.Object > java.lang.Throwable > java.lang.Error Exception的继承关系: java.lang.Object > java.lang.Throwable > java.lang.Exception 定义: Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资

异常:exception和error的区别

Throwable 是所有 Java 程序中错误处理的父类 ,有两种子类: Error 和 Exception . Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息. Exception :表示可恢复的例外,这是可捕捉到的. Java 提供了两类主要的异常 :runtime exception 和 checked exception . checked

Java Exception和Error的差别

Java中异常的抽象类是Throwable,在此基础上.派生出两大类:Error和Exception. Error是程序中的严重错误,不应该用try-catch包括.Javadoc的说明例如以下: An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnorma

Exception 和 Error 有什么区别么

声明 本篇所涉及的提问,正文的知识点,全都来自于杨晓峰的<Java核心技术36讲>,当然,我并不会全文照搬过来,毕竟这是付费的课程,应该会涉及到侵权之类的问题. 所以,本篇正文中的知识点,是我从课程中将知识点消耗后,用个人的理解.观念所表达出来的文字,参考了原文,但由于是个人理解,因此不保证观点完全正确,也不代表错误的观点是课程所表达的.如果这样仍旧还是侵权了,请告知,会将发表的文章删掉. 当然,如果你对此课程有兴趣,建议你自己也购买一下,新用户立减 30,微信扫码订阅时还可以返现 6 元,相

Exception和Error有什么区别?

典型的回答是这样的: Exception 和 Error都继承了Throwable类,在java中只有Throwable类型的实例才可以被抛出(Throw)或者捕捉(catch),它是异常处理机制的基本组成类型. Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应的处理.     Error指在正常情况下,不大可能出现的情况,绝大部门的Error都会导致程序处于非正常的,不可恢复状态.既然是非正常情况,所以不便于也不需要捕获.比如常见的OutOfMemoryEr

java中exception和error有什么区别,运行时异常和一般异常有什么区别

1.exception和error都是继承了throwable类,在java中只有throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型 2.exception和error体现了java平台设计者对不同异常情况的分类.exception是程序正常运行中,可以预料的意外情况,并且应该被捕获,进行相应的处理 3.error是指在正常情况下,不大可能出现的情况,绝大部分的error都会导致程序(比如jvm自身)处于非正常的.不可恢复的状态.既然是非

Java的Exception和Error面试题10问10答

在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它成为面试题中的常客.关于Java中Error和Exception的面试题目多是关于Exception和Error的概念,如何处理Exception,以及 处理Exception时需要遵守的最佳实践等等.尽管关于多线程.垃圾回收.JVM概念和面向对象设计等方面的问题依然主宰着这类面试,你仍然需要为回答

谈一谈Java中的Error和Exception

Error和Exception的联系 继承结构:Error和Exception都是继承于Throwable,RuntimeException继承自Exception. Error和RuntimeException及其子类称为未检查异常(Unchecked exception),其它异常成为受检查异常(Checked Exception). Error和Exception的区别 Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等.如java.lang.S

java virtual machine launcher Error:Could not create the Java Virtual Machine. Error:A Fatal exception has occurred,Program will exit.

Error:Could not create the Java Virtual Machine. Error:A Fatal exception has occurred,Program will exit. 出现以上错误信息提示,如下图所示: 然后点击确定弹出以下错误信息 解决办法: 1.判断机子是否安装了Java环境.具体方法网上搜吧,这里还是给小白一个传送门:(设置) 注意设置自己的环境变量:如JAVA_HOME,CLASSPATH,PATH 2.有些程序会有内存设置,有些程序内存设置过大