Java异常处理之InvocationTargetException(反射异常)

Java异常处理之InvocationTargetException(反射异常)
Java异常处理之InvocationTargetException(反射异常)
InvocationTargetException异常由Method.invoke(obj, )⽅法抛出。当被调⽤的⽅法的内部抛出了异常⽽没有被捕获时,将由此异常接收
⽰例:
1. flect;
2.
3. public class Reflect {
4.    public void run(int i) throws ZeroException {
5.        B b = new B();
6.        b.run(i);
7.    }
8. }
9.
10. class B {
11.    public void run(int i) throws ZeroException {
12.        if (i < 0) {
13.            throw new ZeroException("参数不能⼩于零!");
14.        }
15.        System.out.println("参数:" + i);
16.
17.    }
18. }
19.
20. class ZeroException extends Exception {
21.    private static final long serialVersionUID = 1L;
22.
23.    private String detailMessage;
24.
25.    public ZeroException(String detailMessage) {
26.        this.detailMessage = detailMessage;
27.    }
28.
29.    public String getMessage() {
30.        return detailMessage;
31.    }
32. }
测试:
1. flect;
2.奥运大数据
3. import flect.InvocationTargetException;
4. import flect.Method;
5.
6. public class Test {
7.    public static void main(String[] args) {
网格化管理
8.        try {
9.            Class<?> clazz = Class.forName("st.reflect.Reflect");
10.            Method method = Method("run", int.class);
11.            method.wInstance(), -1);
12.        } catch (ClassNotFoundException e) {
13.            e.printStackTrace();
14.        } catch (SecurityException e) {
15.            e.printStackTrace();
16.        } catch (NoSuchMethodException e) {
17.            e.printStackTrace();
18.        } catch (IllegalArgumentException e) {
19.            e.printStackTrace();
20.        } catch (IllegalAccessException e) {
21.            e.printStackTrace();
22.        } catch (InvocationTargetException e) {
23.            System.out.println("此处接收被调⽤⽅法内部未被捕获的异常");国家船舶舱容积计量站
24.            e.printStackTrace();
ousia25.        } catch (InstantiationException e) {
26.            e.printStackTrace();
27.        }
28.    }
29. }
输出:
1. 此处接收被调⽤⽅法内部未被捕获的异常
2. flect.InvocationTargetException
3.    flect.NativeMethodAccessorImpl.invoke0(Native Method)
4.    flect.NativeMethodAccessorImpl.invoke(Unknown Source)
5.    flect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
6.    at flect.Method.invoke(Unknown Source)
7.    flect.Test.main(Test.java:11)
8. Caused by: st.reflect.ZeroException: 参数不能⼩于零!
9.    flect.B.run(Reflect.java:13)
94gay
10.    flect.Reflect.run(Reflect.java:6)
11.    ... 5 more
也可以直接打印⽬标异常:
1. flect;
2.
3. import flect.InvocationTargetException;
4. import flect.Method;
5.
6. public class Test {
7.    public static void main(String[] args) {
8.        try {
9.            Class<?> clazz = Class.forName("st.reflect.Reflect");
10.            Method method = Method("run", int.class);
11.            method.wInstance(), -1);
12.        } catch (ClassNotFoundException e) {
13.            e.printStackTrace();
14.        } catch (SecurityException e) {
海因里希15.            e.printStackTrace();
16.        } catch (NoSuchMethodException e) {
17.            e.printStackTrace();
18.        } catch (IllegalArgumentException e) {
19.            e.printStackTrace();
20.        } catch (IllegalAccessException e) {
21.            e.printStackTrace();
22.        } catch (InvocationTargetException e) {
23.            System.out.println("此处接收被调⽤⽅法内部未被捕获的异常");
24.            Throwable t = e.getTargetException();// 获取⽬标异常
25.            t.printStackTrace();
26.        } catch (InstantiationException e) {
27.            e.printStackTrace();
28.        }
29.    }
30. }
输出:
1. 此处接收被调⽤⽅法内部未被捕获的异常
2. st.reflect.ZeroException: 参数不能⼩于零!
3.    flect.B.run(Reflect.java:13)
4.    flect.Reflect.run(Reflect.java:6)
5.    flect.NativeMethodAccessorImpl.invoke0(Native Method)
6.    flect.NativeMethodAccessorImpl.invoke(Unknown Source)
7.    flect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
8.    at flect.Method.invoke(Unknown Source)
9.    flect.Test.main(Test.java:11)
10.

本文发布于:2024-09-22 15:44:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/279416.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:没有   计量站   处理   参数   网格化   船舶   容积
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议