欢迎来到天天文库
浏览记录
ID:30848588
大小:77.50 KB
页数:5页
时间:2019-01-04
《解析java中所有错误和异常的父类javalangthrowable》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、解析Java中所有错误和异常的父类java.Iang.Throwable这篇文章主要介绍了Java中所有错误和异常的父类java.Iang.Throwable,文章中简单地分析了其源码,说明在代码注释中,需要的朋友可以参考下在java语言中,错误类的基类是java.Iang.Error,异常类的基类是java.lang.Exception。1)相同点:java.Iang.Error和java.Iang.Exception都是java.Iang.Throwable的子类,因此java.Iang.Error和java.Iang.Excep
2、tion自身及其子类都可以作为throw的使用对象,如:thrownewMyError();和thrownewMyException();其中,MyError类是java.Iang.Error的子类,MyException类是java.Iang.Exception的子类。2)不同点:java.Iang.Error自身及其子类不需要try-catch语句的支持,可在任何时候将返回方法,如下面的方法定义:publicStringmyMethod(){thrownewMyError();}其中MyError类是java.Iang.Error
3、类的子类。java.Iang.Exception自身及其子类需要try-catch语句的支持,如下的方法定义是错误的:publicStringmyMethod(){thrownewMyException();}正确的方法定义如下:publicStringmyMethod()throwsMyException{thrownewMyException();}其中MyException类是java.Iang.Exception的子类。JAVA异常是在java程序运行的时候遇到非正常的情况而创建的对象,它封装了异常信息java异常的根类为ja
4、va.Iang.Throwable,整个类有两个直接子类java.Iang.Error和java.Iang.Exception.Error是程序本身无法恢复的严重错误.Exception则表示可以被程序捕获并处理的异常错误・JVM用方法调用栈来跟踪每个线程中一系列的方法调用过程,该栈保存了每个调用方法的本地信息•对于独立的JAVA程序,可以一直到该程序的main方法•当一个新方法被调用的时候,JVM把描述该方法的栈结构置入栈顶,位于栈顶的方法为正确执行的方法•当一个JAVA方法正常执行完毕,JVM回从调用栈中弹处该方法的栈结构,然后继
5、续处理前一个方法•如果java方法在执行代码的过程中抛出异常,JVM必须找到能捕获异常的catch块代码•它首先查看当前方法是否存在这样的catch代码块,如果存在就执行该catch代码块,否则JVM回调用栈中弹处该方法的栈结构,继续到前一个方法中查找合适的catch代码块•最后如果JVM向上追到了main()方法,也就是一直把异常抛给了main()方法,仍然没有找到该异常处理的代码块,该线程就会异常终止,如果该线程是主线程,应用程序也随之终止,此时JVM将把异常直接抛给用户,在用户终端上会看到原始的异常信息.Java.lang.th
6、rowable源代码解析packagejava.lang;importjava.io.*;/****Throwable是所有Error和Exceptiong的父类*注意它有四个构造函数:*Throwable()*Throwable(Stringmessage)*Throwable(Throwablecause)*Throwable(Stringmessage,Throwablecause)**/publicclassThrowableimplementsSerializable{privatestaticfinallongserial
7、VersionUID=-3042686055658047285L;/***Nativecodesavessomeindicationofthestackbacktraceinthisslot.*/privatetransientObjectbacktrace;/***描述此异常的信息*/privateStringdetailMessage;/***表示当前异常由那个Throwable引起*如果为null表示此异常不是由其他Throwable引起的*如果此对象与自己相同,表明此异常的起因对象还没有被初始化*/privateThrowab
8、lecause=this;/***描述异常轨迹的数组*/privateStackTraceElement[]stackTrace;/***构造函数,起因对象没有被初始化可以在以后使用initCause进行初始化*fill
此文档下载收益归作者所有