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.