我知道应该避免在Android应用中使用printStackTrace()
,我们应该使用Log
类。
在此之后,我尝试记录这样的错误:
try {
//do something
} catch (Exception e) {
Log.d(TAG, "General Exception:\n", e);
}
我的输出如下:
Log level: Verbose
12-27 17:20:21.468: DEBUG/MyApp Page two fragment(11193): General IOException:
我没有收到关于IOException
的详细信息。
有人可以告诉我做错了吗?!
答案 0 :(得分:1)
改为:
Log.d(TAG, e.getClass().getSimpleName() + ": " + e.getMessage());
答案 1 :(得分:1)
没有第3个参数! 击>
如果你阅读 sdk文档,android.utils.Log有两个参数,这是使用的一般准则:
public static final String TAG="myActivity";
try { //do something } catch (Exception e) { Log.d(TAG, "General Exception:\n" + e); }
注意字符串连接运算符的用法。
编辑: 要注意:Log确实有一个重载,它确实可以使用第三个参数,但通常使用带有两个参数的方法,就第三个参数而言参数,即SDK中记录的Throwable
。我很少在我的项目中使用它,因为具有两个参数的方法足以满足我的需要。
答案 2 :(得分:0)
您将获得通用的Exception,一个顶级对象,避免Pokemon异常处理(必须捕获所有)并捕获特定的异常。但这并不是您没有看到异常细节的原因:尝试ioe.getMessage()
:
try{
startActivity( alertIntent );
}catch(IOException ioe)
{
Log.e("error", "startActivity exception "+ ioe.getMessage());
}
如果您需要知道日志记录方法的签名,请查看文档: http://developer.android.com/reference/android/util/Log.html
了解更多详情和想法: http://blog.nelsondev.net/?p=187
答案 3 :(得分:0)
Log.v(); // Verbose
Log.d(); // Debug
Log.i(); // Info
Log.w(); // Warning
Log.e(); // Error
了解更多我nfo
Log.e("error", String.valueOf(e.getMessage()));
答案 4 :(得分:0)
改为做这些::
try {
//do something
}
catch (Exception e) {
Log.e(TAG, "General Exception::"+e);
}