`
53873039oycg
  • 浏览: 843751 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

[简单]得到Exception异常信息

 
阅读更多

         为了在发生异常时候Spring事务能回滚,在捕获异常后抛出new RuntimeException,在最终记录调用结果的方法中捕获Exception,记录下异常信息,今天发现在catch中使用e.getMessage()拿不到异常信息,如下所示:

      

       简单的写个例子,用到了反射:

      

package exception;

public class ExceptionMsgClass {
	public int methodTest(String orgIdStr) throws Exception {
		try {
			if (orgIdStr == null || Integer.parseInt(orgIdStr) < 0) {
				throw new Exception("非法参数");
			}
			int orgId = Integer.parseInt(orgIdStr);
			if (orgId < 100) {
				throw new Exception("参数数量不正确");
			}
			return orgId;
		} catch (Exception e) {
			System.out.println("准备抛出异常信息:" + e.getMessage());
			throw new RuntimeException(e.getMessage());
		}
	}

}

   调用测试:

  

package exception;

import java.lang.reflect.Method;

public class ExceptionReflectTest {
	public void reflectTest(String className,String value){
		try{
			Class c=Class.forName(className);
			Object object = c.newInstance(); 
			Method mth = object.getClass().getMethod("methodTest",String.class);
			Integer result=(Integer) mth.invoke(object, value);
			System.out.println(result);
		}catch(Exception e){
			String msg=e.getMessage();
			System.out.println("捕获异常信息:"+msg);
		}
	}
	public static void main(String[] args) {
		ExceptionReflectTest t=new ExceptionReflectTest();
		t.reflectTest("exception.ExceptionMsgClass", "13");
	}
}

 

   结果为:

  

准备抛出异常信息:参数数量不正确
捕获异常信息:null

    debug结果为:

   

      正确方法为:

     

package exception;

import java.lang.reflect.Method;

public class ExceptionReflectTest {
	public void reflectTest(String className,String value){
		try{
			Class c=Class.forName(className);
			Object object = c.newInstance(); 
			Method mth = object.getClass().getMethod("methodTest",String.class);
			Integer result=(Integer) mth.invoke(object, value);
			System.out.println(result);
		}catch(Exception e){
			String msg=e.getMessage();
			if(e.getCause() instanceof RuntimeException){
				msg=e.getCause().getMessage();
			}
			System.out.println("捕获异常信息:"+msg);
		}
	}
	public static void main(String[] args) {
		ExceptionReflectTest t=new ExceptionReflectTest();
		t.reflectTest("exception.ExceptionMsgClass", "13");
	}
}

  结果为:

  

         转载请注明原处,http://53873039oycg.iteye.com/blog/2104488 ,谢谢。

      全文完。 

  • 大小: 51 KB
  • 大小: 61.8 KB
  • 大小: 5.7 KB
0
0
分享到:
评论
2 楼 53873039oycg 2014-08-18  
nello 写道
String msg=e.getMessage(); 
            if(e.getCause() instanceof RuntimeException){ 
                msg=e.getCause().getMessage(); 
            } 

是有什么问题吗?
1 楼 nello 2014-08-18  
String msg=e.getMessage(); 
            if(e.getCause() instanceof RuntimeException){ 
                msg=e.getCause().getMessage(); 
            } 

相关推荐

    Oracle_存储过程exception异常处理大全及实例经典最终.docx

    ### Oracle 存储过程 Exception 异常处理详解 #### 1. 异常处理概念 在 Oracle 存储过程中,异常处理是一项非常重要的技术,它能够帮助开发人员编写更加健壮和可维护的代码。异常处理允许程序在遇到错误或其他意外...

    Java 常见异常(Runtime Exception )详细介绍并总结

    - 尽量减少在`catch`块中只是简单地打印错误信息,而应提供有用的错误处理策略,如记录日志、重新抛出异常或提供备用方案。 - 使用多个`catch`块分别处理不同类型的异常,提高代码的可读性和可维护性。 - 在`...

    Java异常处理总结

    3. **异常信息要清晰**:确保异常消息足够详细,以便于调试和定位问题。 4. **不要忽视异常**:即使是在测试环境中,也应该妥善处理异常,避免因为忽视异常而导致的问题积累。 综上所述,Java异常处理机制为...

    android全局异常捕获

    通过这种方式,当应用程序的任何线程抛出未捕获的异常时,我们的`CustomExceptionHandler`将会捕获它,执行我们自定义的异常处理逻辑,如在上述示例中将异常信息保存到SDCard。 此外,除了捕获全局异常,开发者还...

    关于Java异常的练习

    至少记录异常信息,以便于调试。 3. **使用`finally`释放资源**:在`finally`块中释放非内存资源,确保资源始终得到正确清理。 4. **自定义异常**:当系统中存在特定的错误情况时,可以创建自定义异常类,使异常更...

    C# 异常处理典型实例

    当尝试除以0时,`catch`块内的代码将被执行,输出异常信息。 其次,我们讨论无效对象异常(NullReferenceException)。这是C#中最常见的异常之一,通常发生在试图访问或操作null引用的对象时。预防这种异常的最佳...

    Android全局异常捕获

    通过自定义`Thread.UncaughtExceptionHandler`,我们可以确保所有未被捕获的异常都能得到妥善处理,并且将异常信息存储到外部存储中,便于后期分析和调试。这对于大型应用或复杂业务逻辑来说尤其关键,因为它能够...

    捕获数学函数异常

    最后,如果还有其他未处理的异常,`Exception`块将捕获它们并打印出相应的错误信息。 除了基本的异常处理,还可以使用`try/except/finally`结构来确保即使在异常发生后,某些清理或资源释放操作仍能得到执行。例如...

    android全局异常处理

    在实际项目中,我们通常会结合使用CrashReport工具(如Crashlytics、Fabric、Bugly等)来收集和分析异常信息,以便更好地定位问题和优化代码。这些工具可以帮助开发者获取到详细的堆栈跟踪,包括设备信息、系统版本...

    java异常学习总结

    - 可以重写`toString()`方法来提供更详细的异常信息。 - 使用`initCause(Throwable cause)`方法指定异常的原始原因。 2. **自定义异常的作用** - 提高程序的可读性和维护性。 - 为业务逻辑提供更具体的错误信息...

    asp.net 网站异常日志记录,全局配置即可实现全部错误的记录,可管理查看错误

    ASP.NET 是一个强大的Web应用程序框架,由微软开发,用于构建高效、安全的Web应用。...通过这些步骤,我们不仅可以确保在出错时得到详细的信息,还能提升问题解决的速度,从而增强系统的稳定性和用户体验。

    C_与C++中的异常处理.pdf

    2. **错误封装**:将错误的具体原因和性质封装到一个异常对象中,该对象可以是简单的整数值也可以是复杂的C++类对象。 3. **异常的检测**:通过轮询或主动上报的方式检测异常的存在。 4. **异常的处理**:根据具体...

    易语言源码易语言向量化异常处理.rar

    7. **调试与日志(Debugging and Logging)**:在易语言源码中,为了便于调试和问题排查,通常会包含一些用于记录异常信息和程序状态的日志功能。 通过对"易语言源码易语言向量化异常处理.rar"这个压缩包文件的分析...

    易语言源码易语言SEH异常处理源码.rar

    易语言的SEH源码可能展示了如何处理这种复杂情况,确保每个级别的异常都能得到适当的处理。 6. **源码分析**:深入研究这个源码,我们可以学习到如何在易语言中注册SEH处理程序,如何设置和调用异常过滤器,以及...

    JAVA基础--如何通过异常处理错误

    例如,下面的代码演示了如何创建一个简单的自定义异常: ```java package Exception; class SimpleException extends Exception{} public class InheritingException{ public void f() throws SimpleException { ...

    Java异常处理.md

    - **正确处理异常**:根据具体的异常类型采取相应的处理措施,如记录日志、重试操作或返回错误信息等。 - **使用finally块释放资源**:对于打开的文件或网络连接等资源,在`finally`块中进行释放,确保资源得到正确...

    java异常

    然后,我们在catch块中捕获这个异常,并打印出异常信息。最后,finally块中的代码确保总能得到执行,即使有异常发生。 了解并熟练掌握Java异常处理不仅能够帮助我们编写更健壮的代码,还能提高程序的可维护性和用户...

    深入探索Win32结构化异常处理

    - **异常记录**:每个异常发生时都会生成一个`EXCEPTION_RECORD`结构体,其中包含了异常的类型、代码以及其他相关信息。 - **异常上下文**:`CONTEXT`结构体存储了发生异常时刻的寄存器状态,这对于恢复执行环境至关...

Global site tag (gtag.js) - Google Analytics