异常捕获和保存

public void getLogToLocal(Throwable e) {
StringBuffer sb = new StringBuffer();
Writer write = new StringWriter();
PrintWriter print = new PrintWriter(write);
e.printStackTrace(print);
print.close();
String string = write.toString();

long currentTimeMillis = System.currentTimeMillis();
String format = sim.format(currentTimeMillis);
sb.append(format + "\n\r");
sb.append(string);

String fileName = "crash-" + format + "-" + currentTimeMillis + ".txt";
String file_dir = getFilePath();

File dir = new File(file_dir);
if (!dir.exists()) {
dir.mkdirs();
}
File file = new File(file_dir + fileName);
try {
if (!file.exists()) {
file.createNewFile();
}

FileOutputStream fos = new FileOutputStream(file);
fos.write(sb.toString().getBytes());

fos.close();

} catch (Exception e1) {
e1.printStackTrace();
}

}

private String getFilePath() {
String file_dir = "";

boolean isSDCardExist = Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState());

boolean isRootDirExist = Environment.getExternalStorageDirectory()
.exists();
if (isSDCardExist && isRootDirExist) {
file_dir = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/openhapplog/";
} else {

file_dir = getApplicationContext().getFilesDir().getAbsolutePath()
+ "/openhappLog/";
}
return file_dir;
}

时间: 2024-10-07 13:56:17

异常捕获和保存的相关文章

android 全局异常的捕获,保存本地以及上传服务器

android在产品上线以后为了能够实时捕获异常,需要写一个异常捕获的类,这个类在你遇到异常的时候会执行uncaughtException这个方法,然后你就可以对异常进行一些操作. 我把代码贴上来: package com.example.spanable_textview; import java.io.File; import java.io.FileOutputStream; import java.lang.Thread.UncaughtExceptionHandler; import

SQLServer异常捕获(Try Catch)

/* SQLServer异常捕获 在SQLserver数据库中,如果有很多存储过程的时候,我们会使用动态SQL进行存储过程调用存储过程,这时候,很可能在某个环节就出错了,但是出错了我们很难去跟踪到出错的存储过程,此时我们就可以使用异常处理,通过日志表来记录存储过程的执行情况,然而定位到错误的存储过程,以下是一个存储过程异常处理的小实例: */ /*===================================================== 相关错误消 息如下: ERROR_NUMB

用c实现跨平台异常捕获机制

TBOX封装了一套跨平台的异常捕获实现,来模拟windows的seh异常处理功能,而且是线程安全的. 在linux/mac下的实现 使用signal 捕获异常信号 使用sigsetjmp保存现场寄存器和信号掩码,出现异常后使用 siglongjmp 跳转到异常处理过程,并恢复状态 使用线程局部存储维护 sigjmpbuf 寄存器现场状态堆栈,保证多线程安全,并且可以实现多层嵌套捕获处理. 在windows下的实现 这个就不用多说了,在vs下直接用 try.except 关键字就行了,如果在min

全套异常捕获与处理

异常 异常即非正常状态,在Python中使用异常对象来表示异常.若程序在编译或运行过程中发生错误,程序的执行过程就会发生改变,抛出异常对象,程序流进入异常处理.如果异常对象没有被处理或捕捉,程序就会执行回溯(Traceback)来终止程序. 异常类型 通用异常类型表 异常 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器

(二十二)异常捕获与用例断言失败截图

1.认识异常 2.捕获异常 3.断言 4.用例失败截图 ===================================================== (一) 什么是异常? exception:程序一旦遇到错误后,就会引发异常,如果异常没有被处理或者被捕捉,程序就会回溯来终止运行 异常的分类 常见的异常有哪些? BaseException:所有异常类的基类 Exception:所有异常类的基类,继承于BaseException AssertionError:assert语句失败 Fi

谈谈前端异常捕获

作为一个前端开发人员,每次看到浏览器控制台信息里面红通通的报错信息是不是都很紧张......不要怕,下面我们就来讨论一下前端的异常捕获. 异常捕获,相对于其他知识点可能没那么被重视,特别是对于前端程序员.但不得不说,这又是一个不得不面对的知识点. 为什么要捕获异常 首先,我们为什么要进行异常捕获和上报呢? 正所谓百密一疏,用程序员的话来说就是:天下不存在没有bug的程序(不接受反驳 ?? ).即使经过各种测试,还是会存在十分隐蔽的bug,这种不可预见的问题只有通过完善的监控机制才能有效的减少其带

.NET 基础 一步步 一幕幕[数组、集合、异常捕获]

数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类型[2]{1,2}: B.数据类型 [] 数组名称 = new 数据类型[数组大小]; C. 数据类型 [] 数组名称 = {数据,数据,数据,数据}; ***数组的长度一旦固定了,就不能再被改变了 可以通过索引来访问数组中的元素: 数组名称[索引位置] 案例: 多维数组:多个线性数组的值 二维:i

异常捕获

异常捕获,在现在很多ide工具里都可以用快捷键很方便的添加上,防止用户看到自己看不懂的报错甚至莫名其妙崩溃,导致用户体验不好. 哪怕显示一个友好一些的崩溃提示,也比直接显示error:xxxx xxxxxxxxx要好得多. 当然最终的目的还是要给出对应的解决办法,让代码可以继续运行. 1 <?php 2 header("content-type:text/html; charset=utf-8"); 3 /** 4 * 包裹重量异常 5 */ 6 class HeavyParce

电脑小白学习软件开发-C#的选择语句、异常捕获,进攻程序员

写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用视频. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下. 不得不说,C#这门语言是小编以为最好的语言.其优美的语法,最具人性化的新特性,以及无敌的开发工具令人陶醉.接触过不少语言,却一直回味写C#的那种状态. 本人认为目前C#是比较适合入门的语言,最为小白,热衷于电脑编程开发的人,可谓是一个大大的福利. 不管如何写过多少中语言教程,在写C#教程时却是如此的富含感情.为了完成我们的全栈梦,作为服务器端,