InvocationTargetException异常
package com.smbea.demo.reflect; /**
* 越界异常
* @author hapday
* @date 2017年1月20日 @time下午7:59:01
*/
public class OverstepBoundaryException extends Exception { /**
*
*/
private static final long serialVersionUID = 1L; private String message; public String getMessage() {
return message;
} public OverstepBoundaryException(String message) {
this.message = message;
} } package com.smbea.demo.reflect; public class B {
public void say(int cursor) throws OverstepBoundaryException{
double number [] = new double[5]; for(int index = 0; index < 5; index++) {
number[index] = Math.random();
} if(0 > cursor) {
throw new OverstepBoundaryException("数组索引不可以小于 0!");
}
if(4 < cursor) {
throw new OverstepBoundaryException("数组索引不可以大于 5!");
} System.out.println("cursor = " + cursor + ", number[" + cursor + "] = " + number[cursor]);
}
} package com.smbea.demo.reflect; /**
* 当被调用的方法内部出现了异常,而未被捕获时,将由 InvocationTargetException 异常来接收
* @author hapday
* @date 2017年1月20日 @time下午8:21:04
*/
public class A {
public void print(int length) throws OverstepBoundaryException {
B b = new B();
b.say(length);
}
} package com.smbea.demo.reflect; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; /**
* InvocationTargetException 异常的抛出通常是一个方法调用另一个方法时,都未捕获方法中的异常
* @author hapday
* @date 2017年1月20日 @time下午8:16:50
*/
public class Test {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("com.smbea.demo.reflect.A");
try {
Method method = clazz.getMethod("print", int.class);
try {
method.invoke(clazz.newInstance(), 5);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
System.out.println("此处接收了方法内部未被捕获的异常。");
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
} package com.smbea.demo.reflect; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; /**
* InvocationTargetException 异常的抛出通常是一个方法调用另一个方法时,都未捕获方法中的异常
* @author hapday
* @date 2017年1月20日 @time下午8:16:50
*/
public class Test2 {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("com.smbea.demo.reflect.A");
try {
Method method = clazz.getMethod("print", int.class);
try {
method.invoke(clazz.newInstance(), -1);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
System.out.println("此处接收了方法内部未被捕获的异常。");
Throwable throwable = e.getTargetException();
throwable.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
当被调用的方法内部出现了异常而未被捕获时,将由 InvocationTargetException 异常来接收。
InvocationTargetException异常的更多相关文章
- 反射调用方法报InvocationTargetException异常
利用 Method 对象的 invoke 方法调用目标对象的方法时, 若在目标对象的方法内部抛出异常, 会被包装成 InvocationTargetException 异常抛出, 可以通过调用 In ...
- InvocationTargetException异常解析
InvocationTargetException异常由Method.invoke(obj, args...)方法抛出.) { throw new ZeroException("参数不能小于 ...
- InvocationTargetException异常的深入研究-servlet的setAttribute与getAttribute
在某项目中,前端jsp传入的用户id数据通过session域传入后台servlet进行处理的过程中,无意间出现了InvocationTargetException异常 前端部分代码如下:测试代码,非原 ...
- SSH答疑解惑系列(二)——java.lang.reflect.InvocationTargetException异常
在项目中遇到了invocationTargetException的问题,在这里跟大家分享一下. 报错信息如下: 使用反射时,比如执行invoke方法,如果被反射执行的方法体抛出了Exception,这 ...
- json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
转:json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException 执行:JSONArray arr ...
- 在 Linux 环境下报错 java.lang.reflect.InvocationTargetException
今天开发了一个 excel 导出数据的功能,放到 linux 服务器上后发现报错. 捕获到 java.lang.reflect.InvocationTargetException 异常,这个异常不太常 ...
- Java异常处理之InvocationTargetException(反射异常)
Java异常处理之InvocationTargetException(反射异常) InvocationTargetException异常由Method.invoke(obj, args...)方法抛 ...
- eclipse InvocationTargetException 错误解决
1.今天做一个推送的,用到了几个jar包,直接以User Library的形式加进 在单元测试中,测试的很好,没有任何问题, 但是在action中测试,一测试就崩. 跟踪以后出现InvocationT ...
- Effective java笔记(五),枚举和注解
30.用enum代替int常量 枚举类型是指由一组固定的常量组成合法值的类型.在java没有引入枚举类型前,表示枚举类型的常用方法是声明一组不同的int常量,每个类型成员一个常量,这种方法称作int枚 ...
随机推荐
- Python之‘’控制流‘’
一.if语句 格式: i1 = 3 if i1 > 4: print('yes you are right') elif 0 < i1 < 4: print('im dont kon ...
- Q的进阶用法
Q的实例化用法 #q1 里面的条件都是or的关系 q1=Q() q1.connector = 'OR' q1.children.append(('id',1)) q1.children.append( ...
- Golang 连接 MongoDB使用连接池
可以免费试用 MongoDB ,500MB 平时做测试没有问题啦,连接数据库可能因为网络有点慢,但是我们是测试啊,不在乎这点吧~ 这是怎么申请试用版的博客,感谢这位大佬.注册好用起来很方便~ 传送门 ...
- 洛谷2685 [TJOI2012]桥
[TJOI2012]桥 题目大意:给定一无向图,求删除一条边后1到n最短路的最大值,以及方案数. 做法:我们先从1为起点.从n为起点跑两边dij,获得每一个点到起点1.终点n的最短距离,其实距离和边权 ...
- python 编辑器PyCharm
1.安装与激活 (1)首先去官网下载安装(这个没什么操作) (2)激活,打开编辑器,然后选择这个,进入 http://idea.lanyus.com/ 后按照提示的修改文件内容,安装激活就完成了 2 ...
- 使用sqlmetal工具自动生成SQL数据库的Linq类文件
第一部:找到sqlmetal.exe. 运行cmd. 执行命令 cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5 ...
- CodeForces - 984C——Finite or not?分数整除问题(数论,gcd)
题目传送门 题目描述:给你一个p/q,让你求在b进制下,这个小数是不是有限小数. 思路: 先来膜拜一个大神的博客,如何求小数的二进制表达,(感谢博主肘子zhouzi).然后小数的其他进制表达也一样. ...
- LDAP环境搭建 OpenLDAP和phpLDAPadmin -- yum版
前言: 前两天公司要求做一个使用LDAP和Kerberos做一个认证授权系统,然后开始学习LDAP相关知识,期间找了不少博客按照步骤来安装,可是很多博客在配置的时候,都会遇到安装过程中一两个问题卡 ...
- 在Javascript中 声明时用"var"与不用"var"的区别
http://www.cnblogs.com/juejiangWalter/p/5725220.html var num = 0;function start() { num = 3;} 只要一 ...
- Go语言基础之16--Mysql基本操作
一.Mysql驱动及数据库连接 1.1 Golang中的Mysql驱动 A. https://github.com/go-sql-driver/mysql B. Go本身不提供具体数据库驱动,只提供驱 ...