码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 动态代理模式下UndeclaredThrowableException的产生


    API文档

    我们先来看下这个异常类的api文档:

    Thrown by a method invocation on a proxy instance if its invocation handler’s invoke method throws a checked exception (a Throwable that is not assignable to RuntimeException or Error) that is not assignable to any of the exception types declared in the throws clause of the method that was invoked on the proxy instance and dispatched to the invocation handler.

    这段描述中介绍了异常会被抛出的情况:调用代理实例的增强方法,如果调用处理程序(增强器)的invoke方法中抛出一个检查异常,但该异常不能被throws子句中声明的任何异常捕获(默认是RuntimeException和Error),那么UndeclaredThrowableException这个异常就会被代理实例抛出。

    代码演示

    由于是使用JDK的动态代理进行演示,那肯定少不了接口类:

    public interface Animal {
        // 奔跑
        void run();
    }
    复制代码
    
    • 1
    • 2
    • 3
    • 4
    • 5

    被代理类:

    public class Pig implements Animal {
        @Override
        public void run() {
            System.out.println("猪突猛进");
        }
    }
    复制代码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    以及增强器InvocationHandler

    public class AnimalInvocationHandler implements InvocationHandler {
    
        private final Object target;
    
        public AnimalInvocationHandler(Object target) {
            this.target = target;
        }
    
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            System.out.println("增强方法 -> className: " + target.getClass().getSimpleName() + " methodName:" + method.getName());
            method.invoke(target, args);
            throw new E
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    verilog学习笔记(1)module实例化2
    docker(第四天)
    Zipping
    Gartner发布『2022年技术成熟度曲线』;『强化学习导论』电子书;读博申请超全攻略;快速构建推荐系统工具包;前沿论文 | ShowMeAI资讯日报
    OP-TEE中的线程管理(四)
    PLSQL导入导出表数据、表结构
    六、数据仓库详细介绍(ETL)方法篇
    SpringBoot异常处理——异常显示的页面
    qt_standard_project_setup
    开源Java诊断工具Arthas:开篇之watch实战
  • 原文地址:https://blog.csdn.net/Huangjiazhen711/article/details/127817433
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号