zoukankan      html  css  js  c++  java
  • InvocationTargetException与UndeclaredThrowableException

    InvocationTargetException

    当java反射调用方抛出异常时,就会用InvocationTargetException将原异常包裹;

    UndeclaredThrowableException

    java动态代理时抛出的异常。当对某接口进行动态代理,接口的方法名称上未声明某类受检异常,而方法却抛出了该异常,动态代理会将该异常用UndeclaredThrowableException包裹。

    由于jdk动态代理内部会调用method.invoke进行调用,当method抛出异常时,则会抛出InvocationTargetException。

    由于InvocationTargetException是受检异常,当代理接口方法未标识InvocationTargetException,则抛出UndeclaredThrowableException

    处理方法:

    public static Throwable unwrapThrowable(Throwable wrapped) {
    Throwable unwrapped = wrapped;
    while (true) {
    if (unwrapped instanceof InvocationTargetException) {
    unwrapped = ((InvocationTargetException) unwrapped).getTargetException();
    } else if (unwrapped instanceof UndeclaredThrowableException) {
    unwrapped = ((UndeclaredThrowableException) unwrapped).getUndeclaredThrowable();
    } else {
    return unwrapped;
    }
    }
    }
  • 相关阅读:
    第七周作业
    第六周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业
    第一周作业
    老鼠与盈利
    币值转换
    2015 USP-ICMC gym 100733 J. Summer Wars
  • 原文地址:https://www.cnblogs.com/userrain/p/8065800.html
Copyright © 2011-2022 走看看