码农知识堂 - 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
  • 相关阅读:
    高效的数据压缩编码方式 Protobuf
    kepler.gl笔记:添加数据
    Spark RDD编程模型及算子介绍(一)
    Cisco VXLAN配置
    前端面试题集锦(1)
    Java发送(QQ)邮箱、验证码发送
    go 1.22 增强 http.ServerMux 路由能力
    【华为OD机试真题 python】发广播【2022 Q4 | 200分】
    本地运行feishu-chatgpt项目结合内网穿透实现无公网IP远程访问
    【ROS进阶篇】第四讲 ROS中的重名问题(节点、话题与参数)
  • 原文地址: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号