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异常的更多相关文章

  1. 反射调用方法报InvocationTargetException异常

    利用 Method 对象的 invoke 方法调用目标对象的方法时, 若在目标对象的方法内部抛出异常, 会被包装成 InvocationTargetException 异常抛出,  可以通过调用 In ...

  2. InvocationTargetException异常解析

    InvocationTargetException异常由Method.invoke(obj, args...)方法抛出.) { throw new ZeroException("参数不能小于 ...

  3. InvocationTargetException异常的深入研究-servlet的setAttribute与getAttribute

    在某项目中,前端jsp传入的用户id数据通过session域传入后台servlet进行处理的过程中,无意间出现了InvocationTargetException异常 前端部分代码如下:测试代码,非原 ...

  4. SSH答疑解惑系列(二)——java.lang.reflect.InvocationTargetException异常

    在项目中遇到了invocationTargetException的问题,在这里跟大家分享一下. 报错信息如下: 使用反射时,比如执行invoke方法,如果被反射执行的方法体抛出了Exception,这 ...

  5. json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

    转:json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException 执行:JSONArray arr ...

  6. 在 Linux 环境下报错 java.lang.reflect.InvocationTargetException

    今天开发了一个 excel 导出数据的功能,放到 linux 服务器上后发现报错. 捕获到 java.lang.reflect.InvocationTargetException 异常,这个异常不太常 ...

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

     Java异常处理之InvocationTargetException(反射异常) InvocationTargetException异常由Method.invoke(obj, args...)方法抛 ...

  8. eclipse InvocationTargetException 错误解决

    1.今天做一个推送的,用到了几个jar包,直接以User Library的形式加进 在单元测试中,测试的很好,没有任何问题, 但是在action中测试,一测试就崩. 跟踪以后出现InvocationT ...

  9. Effective java笔记(五),枚举和注解

    30.用enum代替int常量 枚举类型是指由一组固定的常量组成合法值的类型.在java没有引入枚举类型前,表示枚举类型的常用方法是声明一组不同的int常量,每个类型成员一个常量,这种方法称作int枚 ...

随机推荐

  1. Python之‘’控制流‘’

    一.if语句 格式: i1 = 3 if i1 > 4: print('yes you are right') elif 0 < i1 < 4: print('im dont kon ...

  2. Q的进阶用法

    Q的实例化用法 #q1 里面的条件都是or的关系 q1=Q() q1.connector = 'OR' q1.children.append(('id',1)) q1.children.append( ...

  3. Golang 连接 MongoDB使用连接池

    可以免费试用 MongoDB ,500MB 平时做测试没有问题啦,连接数据库可能因为网络有点慢,但是我们是测试啊,不在乎这点吧~ 这是怎么申请试用版的博客,感谢这位大佬.注册好用起来很方便~ 传送门 ...

  4. 洛谷2685 [TJOI2012]桥

    [TJOI2012]桥 题目大意:给定一无向图,求删除一条边后1到n最短路的最大值,以及方案数. 做法:我们先从1为起点.从n为起点跑两边dij,获得每一个点到起点1.终点n的最短距离,其实距离和边权 ...

  5. python 编辑器PyCharm

    1.安装与激活 (1)首先去官网下载安装(这个没什么操作) (2)激活,打开编辑器,然后选择这个,进入 http://idea.lanyus.com/  后按照提示的修改文件内容,安装激活就完成了 2 ...

  6. 使用sqlmetal工具自动生成SQL数据库的Linq类文件

    第一部:找到sqlmetal.exe. 运行cmd. 执行命令 cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5 ...

  7. CodeForces - 984C——Finite or not?分数整除问题(数论,gcd)

    题目传送门 题目描述:给你一个p/q,让你求在b进制下,这个小数是不是有限小数. 思路: 先来膜拜一个大神的博客,如何求小数的二进制表达,(感谢博主肘子zhouzi).然后小数的其他进制表达也一样. ...

  8. LDAP环境搭建 OpenLDAP和phpLDAPadmin -- yum版

      前言: 前两天公司要求做一个使用LDAP和Kerberos做一个认证授权系统,然后开始学习LDAP相关知识,期间找了不少博客按照步骤来安装,可是很多博客在配置的时候,都会遇到安装过程中一两个问题卡 ...

  9. 在Javascript中 声明时用"var"与不用"var"的区别

    http://www.cnblogs.com/juejiangWalter/p/5725220.html var num = 0;function start() {    num = 3;} 只要一 ...

  10. Go语言基础之16--Mysql基本操作

    一.Mysql驱动及数据库连接 1.1 Golang中的Mysql驱动 A. https://github.com/go-sql-driver/mysql B. Go本身不提供具体数据库驱动,只提供驱 ...