您好,欢迎来到欧得旅游网。
搜索
您的当前位置:首页JAVA查看常见异常信息的处理方法

JAVA查看常见异常信息的处理方法

来源:欧得旅游网
JAVA查看常见异常信息的处理⽅法

Java语⾔的异常类Exception包含着异常的全部信息。

现设异常的实例名为ex,所有的异常都是⼀个除以0的表达式(int i = 1 / 0)所触发的:1、通过ex.getMessage()可以获取异常信息,如/ by zero

2、通过ex.toString()可以获取异常类型和异常信息,如java.lang.ArithmeticException: / by zero

3、通过ex.printStackTrace()可以直接在控制台打印异常的全部信息(包括堆栈),但该函数最好不要直接调⽤⽆参数的版本,因为这样会让控制台显⽰出现错乱。调⽤printStackTrace时,通过如下⽅法调⽤:StringWriter stringWriter = new StringWriter();

PrintWriter printWriter = new PrintWriter(stringWriter);ex.printStackTrace(printWriter);

System.out.println(stringWriter.toString());使⽤此⽅法,控制台输出的内容为:

java.lang.ArithmeticException: / by zero

at ExceptionTest.exec3(ExceptionTest.java:31) at ExceptionTest.exec2(ExceptionTest.java:23) at ExceptionTest.exec1(ExceptionTest.java:15) at ExceptionTest.main(ExceptionTest.java:39)

如果使⽤的是Eclipse的控制台,异常类名和指明⾏数的错误堆栈都会⽣成相应的跳转链接。

4、通过ex.getStackTrace()可以获取堆栈信息,这是 ex.printStackTrace() 外的另⼀种获取异常堆栈信息的⽅法。通过此⽅法可以定制化输出堆栈信息。

System.out.println(ex.getClass().getName() + \": \" + ex.getMessage());StringBuilder sbException = new StringBuilder();for (StackTraceElement ele : ex.getStackTrace()) {

sbException.append(MessageFormat.format(\"\at {0}.{1}({2}:{3})\\n\

ele.getClassName(), ele.getMethodName(), ele.getFileName(), ele.getLineNumber()));;}

System.out.println(sbException);打印出的异常堆栈为:

java.lang.ArithmeticException: / by zero

at ExceptionTest.exec3(ExceptionTest.java:31) at ExceptionTest.exec2(ExceptionTest.java:23) at ExceptionTest.exec1(ExceptionTest.java:15) at ExceptionTest.main(ExceptionTest.java:39)最后列⼀下完整的Java代码:import java.io.PrintWriter;import java.io.StringWriter;

import java.text.MessageFormat;

/**

* 异常打印测试

* @⽂件名称 ExceptionTest.java * @⽂件作者 Tsybius2014

* @创建时间 2016年5⽉13⽇ 下午6:14:08 */

public class ExceptionTest { /** 第⼀层函数 */

public static void exec1() { try {

exec2();

} catch (Exception ex) { throw ex; }

}

/** 第⼆层函数 */

public static void exec2() { try {

exec3();

} catch (Exception ex) { throw ex; } }

/** 第三层函数 */

public static void exec3() { try {

int i = 1 / 0;

} catch (Exception ex) { throw ex; } }

/** 主函数 */

public static void main(String[] args) { try {

exec1();

} catch (Exception ex) {

System.out.println(\"--- getMessage ---\"); System.out.println(ex.getMessage()); System.out.println();

System.out.println(\"--- toString ---\"); System.out.println(ex.toString()); System.out.println();

System.out.println(\"--- printStackTrace ---\"); StringWriter stringWriter = new StringWriter();

PrintWriter printWriter = new PrintWriter(stringWriter); ex.printStackTrace(printWriter);

System.out.println(stringWriter.toString()); System.out.println();

System.out.println(\"--- printStackTrace DIY ---\");

System.out.println(ex.getClass().getName() + \": \" + ex.getMessage()); StringBuilder sbException = new StringBuilder(); for (StackTraceElement ele : ex.getStackTrace()) {

sbException.append(MessageFormat.format(\"\at {0}.{1}({2}:{3})\\n\

ele.getClassName(), ele.getMethodName(), ele.getFileName(), ele.getLineNumber()));; }

System.out.println(sbException); } }}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务