from: http://kanshinu.blogdriver.com/kanshinu/ 异常跟踪

在Java中,利用try..catch(..finally)语句可以捕获和处理异常,非常方便。catch块的常见异常处理方式是输出异常,例如把异常输出到日志文件。

Exception类有一个printStackTrace()方法,它能够从发生异常的方法中输出堆栈信息,默认输出位置是System.err。但是,有时候我们要把堆栈信息输出到System.err之外的其他地方,例如在出现异常时把堆栈信息输出到email,或者用一个对话框显示出来。

printStackTrace()方法有几种不同的类型:

· printStackTrace(),输出到标准错误流。

· printStackTrace(PrintStream ps),输出到名为ps的PrintStream。

· printStackTrace(PrintWriter pw),输出到名为pw的PrintWriter。

我们可以用最后一种printStackTrace()方法把堆栈信息保存到String对象。只要在String对象中捕获了堆栈信息,我们就可以方便地在应用的任何地方使用这些信息了。下面的代码片断示范了具体的实现步骤:

private String getStackTraceAsString() {
// StringWriter将包含堆栈信息
StringWriter stringWriter = new StringWriter();
//必须将StringWriter封装成PrintWriter对象,
//以满足printStackTrace的要求
PrintWriter printWriter = new PrintWriter(stringWriter);
//获取堆栈信息
e.printStackTrace(printWriter);
//转换成String,并返回该String
StringBuffer error = stringWriter.getBuffer();
return error.toString();
}

StringWriter/PrintWriter相关推荐

  1. StringWriter/PrintWriter在Java输出异常信息中的作用

    闲来无事,看看JUnit的源代码.刚刚开始看就发现一段有趣的代码: public String trace() {StringWriter stringWriter = new StringWrite ...

  2. java printwriter 文件_关于java:如何将PrintWriter转换为String或写入文件?

    我正在使用JSP生成动态页面,我想将此动态生成的完整页面保存为文件存档. 在JSP中,所有内容都写入PrintWriter out = response.getWriter(); 在页面的末尾,在向客 ...

  3. Android 保存崩溃日志到本地目录下

    代码如下可以直接复制过去,别人的代码修改了下 package com.hly.rtxt; import android.annotation.SuppressLint; import android. ...

  4. java中什么是空指针异常_java中空指针异常的问题,是怎么回事?请看代码

    问题补充: 加载错误! 失败 JAVA.SQL.SQLEXCEPTION: NO SUITABLE DRIVER FOUND FOR JDBC:SQLSERVER://LOCALHOST:1433;D ...

  5. Android 常见工具类封装

    1,MD5工具类: public class MD5Util {public final static String MD5(String s) {char hexDigits[] = { '0', ...

  6. Android中处理崩溃异常

    2019独角兽企业重金招聘Python工程师标准>>> 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象 ...

  7. Java项目构建基础:统一结果,统一异常,统一日志(好文推荐)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:永动的图灵机 juejin.im/post/5e073980 ...

  8. logback配置控制打印台异常信息_logback异常输出详细信息(调用堆栈)分析

    Logback背景 Logback是一个开源的日志组件,是log4j的作者开发的用来替代log4j的. logback由三个部分组成,logback-core, logback-classic, lo ...

  9. android闪退日志收集

    写一个工具类,然后直接引用,简单粗暴. package com.socialsecurity.main.exception;import java.io.File; import java.io.Fi ...

最新文章

  1. Jdon框架开发指南
  2. git delete file remote
  3. .net随笔-vb.net Accord.Net机器学习之贝叶斯分类
  4. linux关闭时间戳是否有影响,linux – 如何让sec正确忽略时间戳
  5. python3字典平均值_python3基础之字典
  6. 【C语言简单说】七:自定义函数(1)
  7. python 桌面提醒_使用Python获取桌面通知
  8. nodejs mac java home_Mac上搭建nodejs开发环境
  9. printf打印数组_(45)C++面试之把数组排成最小的数
  10. 小程序--改变子级别页面导航栏信息 / navigationBarTitleText
  11. coolpad大神f2Android,酷派大神F2全高清版(8675-FHD Android 5.0)刷Recovery教程
  12. STM32F103系列(二):如何使用串口下载程序
  13. C++实现九宫格输入法T9密码解密
  14. 计算机组成第六章作业,计算机组成原理第六章作业_计算机的运算方法1
  15. amd一键超频怎么用_(完整版)超频必看AMD_CPU超频教程
  16. 怎样做一个软件项目经理? ----写给公司全部的开发者
  17. iOS 火星坐标相关整理及解决方案汇总
  18. 【广告系列一】广告相关名词 CTR/CVR/eCPM...
  19. 瞬时频率函数matlab,瞬时频率估计的相位建模法及Matlab的实现
  20. JS中将中文数字转化为阿拉伯数字

热门文章

  1. 短信验证码总是发送失败是什么原因?
  2. 侍魂微信新服务器2019,侍魂胧月传说手游2019年5月17日微信问答试炼答案
  3. 安卓开发-最简单快速的仿微信聊天实现-附赠微信原生表情,QQ原生表情
  4. 诸神之战 | 赛事升级,4.1亿元奖金纳入浙江赛区奖项权益
  5. SECTION 15 函数和函数式编程(二)
  6. TIA博途中如何通过Prodiag功能制作报警并显示在HMI上?
  7. mui-app开发之项目类型概览
  8. 微信抽奖源码PHP前后台+转盘+数据库完整示例
  9. Java试用两个月,我快被劝退了
  10. 大白菜读取linux硬盘,大白菜的linux之旅,文件操作首探