得到java异常printStackTrace的详细信息
平时写Java代码时,想看抛出的异常信息,来找出具体的异常点,我们常常会用Exception.toString ()或者 Exception.getMessage()来取得异常信息,再把它print到控制台,,但是这些信息只能告诉我们异常本身的信息,对我们找出异常点帮助并不太理想,所以我们会使用Exception.printStackTrace()方法,这样就可以在控制台输出非常详细的异常信息,甚至可以通过它跟踪到异常发生在某个类的第几行,这对我们非常有用。但是我们有时只想得到这些 StackTrace数据,通过其它方式表现出来(非控制台,如网页或GUI),这就有了这篇文章.回想一下,原来的日志工具log4、weblogic服务器、还有webshpere服务器等等好像都可以得到这些信息,所以就先直接在Exception类找找有没有直接的方法可以返回这些信息,看到getStackTrace()方法返回一个StackTraceElement对象的集合(原来怎么没注意到呢?),翻一下JDK,一看StackTraceElement类提供的方法(
String |
getFileName() Returns the name of the source file containing the execution point represented by this stack trace element. |
int |
getLineNumber() Returns the line number of the source line containing the execution point represented by this stack trace element. |
String |
getMethodName() Returns the name of the method containing the execution point represented by this stack trace element. |
int |
hashCode() Returns a hash code value for this stack trace element. |
boolean |
isNativeMethod() Returns true if the method containing the execution point represented by this stack trace element is a native method. |
String |
toString() |
)没错,就是他了,写段代码测试一下先:
- public static void main(String[] args) {
- try{
- byte[] a=args[0].getBytes();
- }catch (Exception ex){
- ex.printStackTrace();
- StackTraceElement [] messages=ex.getStackTrace();
- int length=messages.length;
- for(int i=0;i<length;i++){
- System.out.println("ClassName:"+messages[i].getClassName());
- System.out.println("getFileName:"+messages[i].getFileName());
- System.out.println("getLineNumber:"+messages[i].getLineNumber());
- System.out.println("getMethodName:"+messages[i].getMethodName());
- System.out.println("toString:"+messages[i].toString());
- }
- }
- }
Ok,秘密找到了,原来就这么回事。
下面自己写了一个得到异常详细信息的方法
- public String getExceptionDetail(Exception e) {
- StringBuffer stringBuffer = new StringBuffer(e.toString() + "\n");
- StackTraceElement[] messages = e.getStackTrace();
- int length = messages.length;
- for (int i = 0; i < length; i++) {
- stringBuffer.append("\t"+messages[i].toString()+"\n");
- }
- return stringBuffer.toString();
- }
得到java异常printStackTrace的详细信息的更多相关文章
- java的异常(Exception)信息的详细记录
下面的三个方法都是获取异常的详细信息,或许的异常详细信息以字符串的形式返回,保持栈堆载的风格 方法一: public static String getExceptionAllinformation( ...
- java中的异常和处理详细理解
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你用System.ou ...
- java 异常体系详细介绍
一.异常概述与异常体系结构 异常:在Java语言中,将程序执行中发生的不正常情况称为"异常".(开发过程中的语法错误和逻辑错误不是异常). Java把异常当作对象来处理,并定义一个 ...
- Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php
Atitit.dwr3 不能显示错误详细信息的解决方案,控件显示错误详细信息的解决方案 java .net php 1. Keyword/subtitle 1 2. 使用dwr3的异常convert处 ...
- 打印Java异常堆栈信息
背景 在开发Java应用程序的时候,遇到程序抛异常,我们通常会把抛异常时的运行时环境保存下来(写到日志文件或者在控制台中打印出来).这样方便后续定位问题. 需要记录的运行时环境包含两部分内容:抛异常时 ...
- Effective Java 第三版——75. 在详细信息中包含失败捕获信息
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- 异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败解决办法
最近在做.net项目,因为本人以前做java较多,所以对.net不熟悉,在项目完成后部署到IIS服务器上出现诸多问题,以上其中之一,若有时间,在更新其他问题的解决办法! 异常详细信息: System. ...
- java异常分析;剖析printStackTrace和fillInStackTrace
Java异常的栈轨迹(Stack Trace) 捕获到异常时,往往需要进行一些处理.比较简单直接的方式就是打印异常栈轨迹Stack Trace.说起栈轨迹,可能很多人和我一样,第一反应就是printS ...
- java异常相关说明(printStackTrace,fillInStackTrace等)
我们在实际场景中很容易catch(Exception e) 简单粗暴 这样写代码有几个问题 1.你无法细分具体异常 因为有时需要针对不同异常 产生不同的应对行为 2.直接exception 往往不会包 ...
随机推荐
- 支持中英文和国旗的android国家代码/国际电话区号选择器
最近在做app登录的时候,因为需要支持国外手机号注册和登录,所以就涉及到国际电话区号的选择.在github上面找了一下,国家名称基本都是只有英文版本,而手动的去把中文一个个加上实在是一件费时费力的事情 ...
- WordPress更改固定链接出现404
新浪SAE的前端采用的是nginx,nginx是不识别.htaccess的. 最后学习了新浪SAE官方教程——应用配置模块 – AppConfig终于把问题解决! 1.修改你SAE SDK站点目录下的 ...
- webpack3整理(第一节/满三节)
一.css文件打包到js中(loader的三种写法) //第一种写法:直接用use. module: { rules: [{ test: /\.css$/, use: ['style-loader', ...
- 关于ubuntu16.04系统无法系统更新的解决
1.提示系统更新升级,报错 /boot空间不足 2.根据网络,为获得/boot 空间,选择删除多余的内核文件 2.1 查询系统当前内核 ~$dpkg --get-selections |grep li ...
- 语音行业技术领先者Nuance上海诚招ASR/NLP研发工程师和软件工程师
Nuance is a leading provider of voice and language solutions for businesses and consumers around the ...
- How to Configure YUM to Install Packages From Installation ISO (RHEL)
1. Mount RHEL Installation ISO mkdir /media/dvd mount /dev/cdrom /media/dvd 2. Get Media ID with the ...
- ALTER DATABASE 修改一个数据库
SYNOPSIS ALTER DATABASE name SET parameter { TO | = } { value | DEFAULT } ALTER DATABASE name RESET ...
- 微信小程序中使用echarts
一.效果图 二.代码 import * as echarts from '../../component/ec-canvas/echarts'; const app = getApp(); var x ...
- JavaSE-24 多线程
学习要点 线程概述 Java中的多线程 线程状态 线程调度 线程同步 线程间通信 线程概述 1 进程 进程就是应用程序的执行实例. 进程特征: 动态性:动态产生,动态消亡.进程启动,系统为其分配资源 ...
- 正确地使用Context
Context应该是每个入门Android开发的程序员第一个接触到的概念,它代表当前的上下文环境,可以用来实现很多功能的调用,语句如下. //获取资源管理器对象,进而可以访问到例如 string, c ...