1.Exception家谱
Exception继承Throwable基类,而Throwable类现实了Serializable接口,即Throwable自身以及它的子类都是可序列化的。
(1)Throwable类
主要成员变量:
detailMessage:String 用于描述异常信息
cause:Throwable 指向引起本异常的上一个异常,作用于组成异常链,
可命名为”原因异常“
stackTrace:StackTraceElement[] 异常栈信息,就是一个StackTraceElement的数组,
StackTraceElement见下面类介绍
主要成员方法:
printStackTrace():void 输出异常信息。首先打印本异常类全路径、detailMessage,
和异常栈信息,再指向cause,递归输出整个异常链的信息
(2)Exception类
Exception类没什么可说的,就定义了多个不同类型的构造方法,每个构造方法,都调用基类Throwable
的相应构造方法。
(3)StackTraceElement类
主要成员变量:
declaringClass:String 发生异常的类全路径名
methodName:String 发生异常的类方法名
fileName:String 发生异常的类文件名
lineNumber:int 发生的异常在类代码的第几行
下面贴上类图,如下:
2.模范SQLException写的异常类
package com.wind.DbTec.sqlpkg; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; /** * 模范SQLException实现 探究Iterable接口的实现,链表的实现 * * @author zhouyanjun * @version 1.0 2014-12-9 */ public class MyException extends Exception implements Iterable<Throwable> { public MyException(Throwable throwable) { super(throwable); } /** * 设置下一个相关异常 * * @param ex */ public void setNextException(MyException ex) { MyException current = this; for (;;) { MyException next = current.next; if (next != null) { current = next; continue; } if (nextUpdater.compareAndSet(current, null, ex)) { return; } current = current.next; } } /** * 异常迭代方法,用于遍历异常,实现了Iterable迭代器的类,可以在foreach语句下遍历 */ public Iterator<Throwable> iterator() { return new Iterator<Throwable>() { MyException nextException = MyException.this; Throwable cause = null; public boolean hasNext() { if (nextException != null || cause != null) { return true; } return false; } public Throwable next() { Throwable throwable = null; if (cause == null && nextException != null) { throwable = nextException; cause = nextException.getCause(); nextException = nextException.getNextException(); } else if (cause != null) { throwable = cause; cause = cause.getCause(); } else { throw new NoSuchElementException(); } return throwable; } public void remove() { throw new UnsupportedOperationException(); } }; } /** * public Iterator<Throwable> iterator() { return new Iterator<Throwable>() * { MyException firstException = MyException.this; MyException * nextException = firstException.getNextException(); Throwable cause = * firstException.getCause(); * * public boolean hasNext() { if (firstException != null || nextException != * null || cause != null) { return true; } return false; } * * public Throwable next() { Throwable throwable = null; if (firstException * != null) { throwable = firstException; firstException = null; } else if * (cause != null) { throwable = cause; cause = cause.getCause(); } else if * (nextException != null) { throwable = nextException; cause = * next.getCause(); nextException = nextException.getNextException(); } else * throw new NoSuchElementException(); return throwable; } * * public void remove() { throw new UnsupportedOperationException(); } }; } **/ private MyException getNextException() { return (next); } private volatile MyException next; // 下一个异常,用于实现链表 private static final long serialVersionUID = 7376914647474065999L; private static final AtomicReferenceFieldUpdater<MyException, MyException> nextUpdater = AtomicReferenceFieldUpdater .newUpdater(MyException.class, MyException.class, "next"); // 原子对象字段更新器,对Volatile变量进行值更新 public static void main(String[] args) { NoSuchElementException noSEleException = new NoSuchElementException(); UnsupportedOperationException unSuOperaException = new UnsupportedOperationException(); MyException head = new MyException(noSEleException); MyException one = new MyException(unSuOperaException); head.setNextException(one); for (Throwable throwable : head) { throwable.printStackTrace(); } } }
(1) MyException继承Exception,实现了自己的异常类。
(2)另外MyException定义了一个next成员变量,指向下一个MyException类型的异常,以实现链表。MyEx- ception还实现了Iterable接口,用于迭代遍历链表。
相关推荐
Eclipse运行TOMCAT 出现在a java exception has occurred的解决办法。
Java exception handling methods and several example source code
java exception descriptions
Java异常处理的几个Example代码,让我们了解异常类型、声明异常、抛出和捕获异常、从异常获取信息、创建自定义异常等内容。
Java Exception Handling 内容.ppt
Java Exception 几种不适当的处理
Model类中创建HashMap并运用基本的数学算法,Program类中调用Model类并在通过UI实现,过程中对于可能出现的checked exception利用try-catch解决。
反编译工具两个版本,一个支持jdk1.7的 如果打开弹出这个提示 A Java Exception has occurred 可以使用另外一个1.7版本的试试看
主要介绍了Java Exception 捕获和显示实例详解的相关资料,需要的朋友可以参考下
JD-GUI是使用C++开发的一款Java反编译工具,它是一个独立图形界面的Java源代码“.class”文件反编译工具。 JD-GUI是使用C++开发的一款Java反编译工具,它是一个独立图形界面的Java源代码“.class”文件反编译工具。
关于javaexception的讲解,很透彻,适合中高级别的!
java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题java遇到的问题
最新版jd-gui,适用于x86版本的JDK,JDK最低要求1.6,最高支持1.8
下面小编就为大家带来一篇Java异常 Exception类及其子类(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
java development part of exception
java解决nested exception is java.lang.OutOfMemoryError Java heap space 解决OOM
一个简单的Clojure库,该库允许在Clojure中动态定义Java Exception类。 动机 有时,您只需要可以直接捕获的快速Exception类。 defexception使用Java字节码动态创建直接从clojure.lang.ExceptionInfo继承的Java类。 ...
java Exception中Throwable和Exception之间的区别
javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 javavi.zip 09.Java输入/输出流上机作业参考(文本编辑器) javathread.zip 10.Java多...