2023年12月8日发(作者:)
Java异常处理之InvocationTargetException(反射异常)
Java异常处理之InvocationTargetException(反射异常)
InvocationTargetException异常由(obj, )方法抛出。当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接
收
示例:
1. package t;
2.
3. public class Reflect {
4. public void run(int i) throws ZeroException {
5. B b = new B();
6. (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. n("参数:" + 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. Message = detailMessage;
27. }
28.
29. public String getMessage() {
30. return detailMessage;
31. }
32. }
测试:
1. package t;
2.
3. import tionTargetException;
4. import ;
5.
6. public class Test {
7. public static void main(String[] args) {
8. try {
9. Class> clazz = e("t");
10. Method method = hod("run", );
11. (tance(), -1);
12. } catch (ClassNotFoundException e) {
13. tackTrace();
14. } catch (SecurityException e) {
15. tackTrace();
16. } catch (NoSuchMethodException e) {
17. tackTrace();
18. } catch (IllegalArgumentException e) {
19. tackTrace();
20. } catch (IllegalAccessException e) { 21. tackTrace();
22. } catch (InvocationTargetException e) {
23. n("此处接收被调用方法内部未被捕获的异常");
24. tackTrace();
25. } catch (InstantiationException e) {
26. tackTrace();
27. }
28. }
29. }
输出:
1. 此处接收被调用方法内部未被捕获的异常
2. tionTargetException
3. at 0(Native Method)
4. at (Unknown Source)
5. at (Unknown Source)
6. at (Unknown Source)
7. at (:11)
8. Caused by: ception: 参数不能小于零!
9. at (:13)
10. at (:6)
11. ... 5 more
也可以直接打印目标异常:
1. package t;
2.
3. import tionTargetException;
4. import ;
5.
6. public class Test {
7. public static void main(String[] args) {
8. try {
9. Class> clazz = e("t");
10. Method method = hod("run", );
11. (tance(), -1);
12. } catch (ClassNotFoundException e) {
13. tackTrace();
14. } catch (SecurityException e) {
15. tackTrace();
16. } catch (NoSuchMethodException e) {
17. tackTrace();
18. } catch (IllegalArgumentException e) {
19. tackTrace();
20. } catch (IllegalAccessException e) {
21. tackTrace();
22. } catch (InvocationTargetException e) {
23. n("此处接收被调用方法内部未被捕获的异常");
24. Throwable t = getException();// 获取目标异常
25. tackTrace();
26. } catch (InstantiationException e) {
27. tackTrace();
28. }
29. }
30. }
输出:
1. 此处接收被调用方法内部未被捕获的异常
2. ception: 参数不能小于零!
3. at (:13)
4. at (:6)
5. at 0(Native Method) 6. at (Unknown Source)
7. at (Unknown Source)
8. at (Unknown Source)
9. at (:11)
10.


发布评论