在java语言中,错误类的基类是java.lang.Error,异常类的基类是java.lang.Exception。
1)相同点:java.lang.Error和java.lang.Exception都是java.lang.Throwable的子类,因此java.lang.Error和java.lang.Exception自身及其子类都可以作为throw的使用对象,如:throw new MyError();和throw new MyException();其中,MyError类是java.lang.Error的子类,MyException类是java.lang.Exception的子类。
2)不同点:java.lang.Error自身及其子类不需要try-catch语句的支持,可在任何时候将返回方法,如下面的方法定义:
public String myMethod() {
throw new MyError();
}
其中MyError类是java.lang.Error类的子类。
java.lang.Exception自身及其子类需要try-catch语句的支持,如下的方法定义是错误的:
public String myMethod() {
throw new MyException();
}
正确的方法定义如下:
public String myMethod() throws MyException {
throw new MyException();
}
其中MyException类是java.lang.Exception的子类。
--------------------------------------------
JAVA异常是在java程序运行的时候遇到非正常的情况而创建的对象,它封装了异常信息,java异常的根类为java.lang.Throwable,整个类有两个直接子类java.lang.Error和java.lang.Exception.Error是程序本身无法恢复的严重错误.Exception则表示可以被程序捕获并处理的异常错误.JVM用方法调用栈来跟踪每个线程中一系列的方法调用过程,该栈保存了每个调用方法的本地信息.对于独立的JAVA程序,可以一直到该程序的main方法.当一个新方法被调用的时候,JVM把描述该方法的栈结构置入栈顶,位于栈顶的方法为正确执行的方法.当一个JAVA方法正常执行完毕,JVM回从调用栈中弹处该方法的栈结构,然后继续处理前一个方法.如果java方法在执行代码的过程中抛出异常,JVM必须找到能捕获异常的catch块代码.它首先查看当前方法是否存在这样的catch代码块,如果存在就执行该 catch代码块,否则JVM回调用栈中弹处该方法的栈结构,继续到前一个方法中查找合适的catch代码块.最后如果JVM向上追到了main()方法,也就是一直把异常抛给了main()方法,仍然没有找到该异常处理的代码块,该线程就会异常终止,如果该线程是主线程,应用程序也随之终止,此时 JVM将把异常直接抛给用户,在用户终端上会看到原始的异常信息.
分享到:
相关推荐
主要介绍了Java中所有错误和异常的父类java.lang.Throwable,文章中简单地分析了其源码,说明在代码注释中,需要的朋友可以参考下
java.lang.Throwable java.lang.Exception java.lang.RuntimeException java.lang.ArithmeticException 当出现异常的运算条件时,抛出此异常。 这个异常的解释是 "数学运算异常 ",比如程序中出现了除以...
解析Java中所有错误和异常的父类java.lang.Throwable共3页.pdf.zip
java.lang.Throwable (implements java.io.Serializable) java.lang.Exception java.lang.RuntimeException com.opensymphony.xwork2.XWorkException (implements com.opensymphony.xwork2.util.location.Locatable...
log(java.lang.Throwable, java.lang.String )。 问题 由于ServletContext 是一个简单的接口,并且也没有规定怎样实现它声明的方法。 因而 log 方法的具体实现是由供应商处理的。 您需要从服务器的文档中得知...
Bugly 平台集成 Tinker 热修复 demo
里面很全各种银行,支付宝,微信等一些支付代码都有,下载后直接导入项目里面看源码
axis2请求.Net webservice接口,以天气预报getSupportCity接口为例
jquery.throwable:使HTML元素可抛出的JQuery插件
除了加入jboss-web.xml,删除xerces-2.6.2.jar和xml-apis.jar之外, <!... ...Ljava.lang.Throwable) 原因是旧版本的slf4j-api不包含以上方法,附件解压后覆盖jboss5.1GA/common/lib下的同名文件即可
Multiple-Choice Quiz 1 aaaba aadda 1.Which method must exist in every Java application?... (a) java.lang.Throwable (b) java.lang.Error (c) java.io.IOException (d) java.lang.RuntimeException
import java.lang.Integer.parseInt; public class StaticImport { int x = parseInt("123"); System.out.println(x); } 这样的程序如果不在IDE 工具中输入,是很难看出这个程序代码会出现问题,可它偏偏就出问题...
fastjson-bypass-autotype-1.2.68 fastjson因为exceptClass期望类的特性导致可以通过AutoCloseable和Throwable绕过自动类型。复现运行org.chabug.fastjson.DemoApplication ,访问 自动关闭绕过POST /parseObject ...
Java中所有的异常都有一个祖先java.lang.Throwable。Throwable有两个重要子类Error和Exception。 Error表示程序无法处理的错误,是运行时较为严重的问题。大多数错误于代码编写者的执行无关,而是运行JVM时出现的...
catch (Throwable e) { e.printStackTrace(); } } } public static void main(String[] args) throws IOException { Server s = new Server(); s.listen(); } } package ...
主要介绍了Java异常处理 Throwable实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1. Throwable 2. Error(错误) 3. Exception(异常) 运行时异常 编译时异常 4. 受检异常与非受检异常 受检异常 非受检异常 Java异常关键字 Java异常处理 声明异常 抛出异常 捕获异常 如何选择异常类型 常见异常...
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql....
CommonProject图书馆 通用项目图书馆 样本 ProGuard配置 如果您在项目中使用Proguard,请在配置中... (java.lang.Throwable); } ######## Volley ######## -keep class com.android.volley.** {*;} -keep class c
该代理将附加代码内联到java.lang.Throwable.printStackTrace方法中,并且此内联代码引用在samebug-notifier-agent项目中声明的类。 但是,这些类在系统类加载器中不可见。 此描述了一种变通方法(来自的作者,该...