printStackTrace()和getMessage()方法的使用

printStackTrace()方法:打印出所有与之相关的异常出处,换句话说就是不仅打印出异常名字还是显示出位置。便于程序的调试。

输出方式


/**
 * 获取e.printStackTrace() 的具体信息,赋值给String 变量,并返回
 * 
 * @param e
 *            Exception
 * @return e.printStackTrace() 中 的信息
 */
public static String getStackTraceInfo(Exception e) {
		StringWriter sw = null;
		PrintWriter pw = null;
		try {
		    sw = new StringWriter();
		    pw = new PrintWriter(sw);
		    e.printStackTrace(pw);//将出错的栈信息输出到printWriter中
		    pw.flush();
		    sw.flush();
		    return sw.toString();
		} catch (Exception ex) {
		    return "printStackTrace()转换错误";
		} finally {
		    if (sw != null) {
		        try {
		            sw.close();
		        } catch (IOException e1) {
		            e1.printStackTrace();
		        }
		    }
		    if (pw != null) {
		        pw.close();
		    }
		}
 }

缺点:
1、在部署到正式服,或者有日志系统不能规范的采集到异常错误,因为这种异常没有附加任何日志规范,比如日期,时间,等级,给日志分析带来了不便
2、e.printStackTrace() 语句要产生的字符串记录的是堆栈信息,太长太多,
要尽量少用,可能会导致锁死(详情

getMessage()方法:打印出具体异常的名字。不显示具体位置,不方便调试程序。

getMessage()直接返回的就是String

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值