码迷,mamicode.com
首页 > 编程语言 > 详细

java 检查抛出的异常是否是要捕获的检查性异常或运行时异常或错误

时间:2014-10-16 06:49:52      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   java   for   sp   

    /**
     * Return whether the given throwable is a checked exception:
     * that is, neither a RuntimeException nor an Error.
     * @param ex the throwable to check
     * @return whether the throwable is a checked exception
     * @see java.lang.Exception
     * @see java.lang.RuntimeException
     * @see java.lang.Error
     */
    public static boolean isCheckedException(Throwable ex) {
        return !(ex instanceof RuntimeException || ex instanceof Error);
    }

    /**
     * Check whether the given exception is compatible with the specified
     * exception types, as declared in a throws clause.
     * @param ex the exception to check
     * @param declaredExceptions the exception types declared in the throws clause
     * @return whether the given exception is compatible
     */
    //如果ex是RuntimeException或者Error,则兼容,如果ex是declaredExceptions种某个类的子类则是
    public static boolean isCompatibleWithThrowsClause(Throwable ex, Class<?>... declaredExceptions) {
        if (!isCheckedException(ex)) {//如果ex是RuntimeException或者Error,则为true
            return true;
        }
        if (declaredExceptions != null) {
            for (Class<?> declaredException : declaredExceptions) {
                if (declaredException.isInstance(ex)) {
                    return true;
                }
            }
        }
        return false;
    }
isCompatibleWithThrowsClause这个方法用在什么地方?用在抛出指定类型异常的检查中,比如一个方法如果只有抛出某些异常才需要处理的时候可以调用这个方法
    public static void test(){
        try {
            int a = 1 / 0;
        } catch (Exception e) {
            if(isCompatibleWithThrowsClause(e, NoSuchFieldException.class)){
                //如果是NoSuchFieldException检查性异常才进行处理
                //问题是运行时异常和错误也同样要处理
                System.out.println("要处理");
            }
        }
        
    }

java 检查抛出的异常是否是要捕获的检查性异常或运行时异常或错误

java 检查抛出的异常是否是要捕获的检查性异常或运行时异常或错误

标签:style   blog   color   io   os   ar   java   for   sp   

原文地址:http://www.cnblogs.com/ghgyj/p/4027898.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!