`
jsczxy2
  • 浏览: 1275335 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

java中使用反射来执行方法并捕捉反射调用方法中抛出的错误

    博客分类:
  • java
阅读更多

/**
 * @author jsczxy2
 */
public class TestCaseThread implements Runnable, Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = -5528958657359499860L;

	Log log = LogFactory.getLog(getClass());

	private String className;

	public TestCaseThread(String className) {
		this.className = className;
	}

	@SuppressWarnings("unchecked")
	public void run() {
		try {
			Class c = Class.forName(className);
			Method method = c.getMethod("main", String[].class);
			SysDwr.testFlag.setCheck(false);
			method.invoke(null, (Object) new String[] {});
			SysDwr.testFlag.setCheck(true);
		} catch (Exception e) {
			SysDwr.testFlag.setCheck(true);
			SysDwr.testFlag.setErrorMsg(handleException(e));
		}
	}

	private String handleException(Exception e) {
		String msg = null;
		if (e instanceof InvocationTargetException) {
			Throwable targetEx = ((InvocationTargetException) e)
					.getTargetException();
			if (targetEx != null) {
				msg = targetEx.getMessage();
			}
		} else {
			msg = e.getMessage();
		}
		return msg;
	}

}
 handleException方法用来捕捉反射调用类报出的错误,与一般直接取方法的错误是不一样的,反射类调用方法中抛出的Exception会以InvocationTargetException抛出到上层业务中,必须单独处理。
分享到:
评论

相关推荐

    行业分类-设备装置-基于JAVA字节码插桩和JAVA方法挂钩检测JAVA沙箱逃逸攻击.zip

    方法挂钩可以帮助我们在调用特定方法前或后执行自定义逻辑,如验证上下文、校验参数,或者在检测到可疑行为时抛出异常。 Java沙箱是一种安全机制,用于限制代码的执行权限,防止不受信任的代码损害系统。在Java应用...

    Java 互操作:平台类型与类型映射

    这允许Kotlin代码在调用Java方法时,可以接受到null值而不会在编译时抛出错误。 这种放宽空安全检查的做法是双刃剑。它解决了空指针异常的风险,但同时也使得潜在的null异常更加难以在开发过程中被检测到,增加了...

    CoreJava学习笔记

    数组拷贝可以使用`System.arraycopy()`方法或者利用数组的clone()方法来实现。 #### 六、对象和类 **面向对象与面向过程:** 面向对象编程(OOP)强调使用对象来构建程序。而面向过程编程更侧重于使用函数来组织...

    java全集.pdf JAVA全集

    - 可以使用`System.arraycopy()`方法或者`Arrays.copyOf()`方法来复制数组。 #### 六、对象和类 **6.1 面向对象与面向过程** - **面向对象**:将数据和操作数据的方法封装在一起。 - **面向过程**:以过程为中心...

    java异常集合

    - **定义**:当尝试反射调用不存在的方法时抛出。 - **示例**: ```java Method method = SomeClass.class.getMethod("invalidMethod"); // 将抛出NoSuchMethodException ``` 此外,还有一些其他重要的异常类...

    常见的Java面试问题及其答案

    Java中的异常处理机制主要用于捕捉和处理程序运行时可能发生的错误或异常情况。异常处理的基本结构包括try、catch、finally块以及throw关键字: - **try块**:包含可能引发异常的代码段。 - **catch块**:用于捕获并...

    java基础学习词汇

    在Java反射API中,可以动态地调用类的方法。 #### Iterator (迭代器) 迭代器是一个用于遍历集合的接口。Java中的迭代器允许逐个访问集合中的元素,而无需暴露集合的具体实现。 #### Legal (合法的) 虽然“legal...

    JAVA后端开发面试题

    - 异常抛出:使用throws关键字在方法声明中抛出异常,将异常处理交给上层调用者。 3. Java序列化 - Java序列化是将对象的状态转换成字节序列的过程,以便可以存储在磁盘上或在网络上传输。要实现序列化,一个类...

    java api1.6中文版

    泛型是Java 1.5引入的特性,允许在类、接口和方法中使用类型参数,提高了代码的类型安全性和重用性。1.6继续支持和优化泛型的使用。 15. **断言**: 断言是用于测试假设的语句,可在开发阶段帮助找出代码中的错误...

    Java入门学习笔记

    - 使用throw关键字抛出自定义异常。 #### 九、图形用户接口 - Java提供了AWT和Swing两个API来开发GUI应用。 #### 十、AWT(AbstractWindowToolkit)事件模型 - AWT提供了基本的GUI组件和事件处理模型。 #### ...

    语言技术Java:二(进阶)

    6. **反射API**:反射是Java的一个强大工具,它允许程序在运行时动态地获取类的信息(如类名、方法名)并调用。这对于实现元编程、插件系统或动态加载类非常有用。 7. **设计模式**:设计模式是软件开发中解决问题...

    CoreJava笔记.doc

    - **说明**:泛型允许在类、接口和方法中使用类型参数。 - **用法**:通过类型参数定义泛型类或方法。 - **优势**:提高了代码的可读性和重用性,减少了类型转换的错误。 以上就是CoreJava的一些核心知识点的详细...

    JAVA核心技术

    - RuntimeException及其子类,不需要在方法声明中明确抛出。 ##### 8.9 写你自己的异常 - 通过继承Exception或其子类来创建自定义异常。 ##### 8.10 抛出你自己的异常 - 使用throw语句抛出自定义异常。 #### 第九...

    java面试题集及答案解析

    Java中的线程同步主要依赖于`wait()`、`sleep()`和`notify()`等方法来实现线程间的通信和协调。 - **wait()**:使当前线程进入等待状态,释放当前持有的锁,直到被其他线程唤醒。 - **sleep()**:使当前线程暂停...

    java基础知识

    `checked`异常需要在编译时进行处理,通常是通过`try-catch`块捕获或在方法签名中声明抛出。 - 常见的异常类包括`IOException`、`NullPointerException`等。 #### 十一、总结 本文概述了Java语言的基础知识,...

    科目二专业级真题60题.docx

    反射不能直接通过`get()`方法获取私有成员的值,需要先调用`setAccessible(true)`方法来允许访问私有成员。 ### List操作 **知识点概述:** `List`是Java集合框架的一部分,用于存储有序的数据项。在操作`List`时...

    JNI API 中文完全手册

    在使用JNI进行编程时,可以创建和更新Java对象(包括数组和字符串)、调用Java方法、捕捉和抛出异常、加载类和获取类信息、执行运行时类型检查等操作。此外,JNI可与调用API一起使用,以便将任意本地应用程序嵌入到...

    CoreJavaNoteBook

    - **抛出你自己的异常**:使用throw关键字抛出自定义异常。 #### 9. 图形用户接口 - **AWT(Abstract Window Toolkit)**:Java提供的用于构建GUI应用程序的工具包。 - **AWT事件模型**:描述了AWT事件的处理机制...

    java学习笔记 初学者必读

    8.10. 抛出你自己的异常 8-40 9. 八•图形用户接口 9-40 10. 九•AWT(Abstract Window Toolkit) 事件模型 10-41 11. 十•The AWT Component Library 11-41 12. 十一•JFC(Java Foundation Classes) 12-41 13. ...

Global site tag (gtag.js) - Google Analytics