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;
    }
    }
    }
  • 相关阅读:
    java exception
    【洛谷P1627】 【CQOI2009】中位数
    切蛋糕
    【NOIP2015Day2T2】【洛谷P2679】子串
    【NOIP2017Day1T3】【洛谷P3953】逛公园
    【bzoj1082】【SCOI2005】栅栏
    搬砖
    花花的森林
    跳跳棋
    异或
  • 原文地址:https://www.cnblogs.com/userrain/p/8065800.html
Copyright © 2011-2022 走看看