exceptionunwrapper.java

来自「Oracle BerkeleyDB(Oracle内嵌数据库」· Java 代码 · 共 70 行

JAVA
70
字号
/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2000-2006 *      Oracle Corporation.  All rights reserved. * * $Id: ExceptionUnwrapper.java,v 12.4 2006/08/31 18:14:09 bostic Exp $ */package com.sleepycat.util;/** * Unwraps nested exceptions by calling the {@link * ExceptionWrapper#getCause()} method for exceptions that implement the * {@link ExceptionWrapper} interface.  Does not currently support the Java 1.4 * <code>Throwable.getCause()</code> method. * * @author Mark Hayes */public class ExceptionUnwrapper {    /**     * Unwraps an Exception and returns the underlying Exception, or throws an     * Error if the underlying Throwable is an Error.     *     * @param e is the Exception to unwrap.     *     * @return the underlying Exception.     *     * @throws Error if the underlying Throwable is an Error.     *     * @throws IllegalArgumentException if the underlying Throwable is not an     * Exception or an Error.     */    public static Exception unwrap(Exception e) {        Throwable t = unwrapAny(e);        if (t instanceof Exception) {            return (Exception) t;        } else if (t instanceof Error) {            throw (Error) t;        } else {            throw new IllegalArgumentException("Not Exception or Error: " + t);        }    }    /**     * Unwraps an Exception and returns the underlying Throwable.     *     * @param e is the Exception to unwrap.     *     * @return the underlying Throwable.     */    public static Throwable unwrapAny(Throwable e) {        while (true) {            if (e instanceof ExceptionWrapper) {                Throwable e2 = ((ExceptionWrapper) e).getCause();                if (e2 == null) {                    return e;                } else {                    e = e2;                }            } else {                return e;            }        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?