我有一个抛出异常的try / catch块,我希望在Android设备日志中看到有关异常的信息。
我从开发计算机上使用此命令读取了移动设备的日志:
/home/dan/android-sdk-linux_x86/tools/adb shell logcat
我先试了这个:
try {
// code buggy code
} catch (Exception e)
{
e.printStackTrace();
}
但是这不会在日志中打印任何内容。这很可惜因为它会有很多帮助。
我取得的最好成绩是:
try {
// code buggy code
} catch (Exception e)
{
Log.e("MYAPP", "exception: " + e.getMessage());
Log.e("MYAPP", "exception: " + e.toString());
}
总比没有好,但不是很满意。
您知道如何将完整的回溯打印到日志中吗?
感谢。
答案 0 :(得分:155)
try {
// code that might throw an exception
} catch (Exception e) {
Log.e("MYAPP", "exception", e);
}
答案 1 :(得分:44)
这个辅助函数也很好用,因为 Exception 也是 Throwable 。
try{
//bugtastic code here
}
catch (Exception e)
{
Log.e(TAG, "Exception: "+Log.getStackTraceString(e));
}
答案 2 :(得分:8)
catch (Exception e) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream stream = new PrintStream( baos );
e.printStackTrace(stream);
stream.flush();
Log.e("MYAPP", new String( baos.toByteArray() );
}
或者......你知道...... EboMike说的话。
答案 3 :(得分:3)
public String getStackTrace(Exception e){
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
return sw.toString();
}
答案 4 :(得分:2)
e.printStackTrace()将它打印给我。我认为你没有正确运行logcat。不要在shell中运行它,只需运行
/home/dan/android-sdk-linux_x86/tools/adb logcat
答案 5 :(得分:1)
标准输出和错误输出默认指向/ dev / null,因此全部丢失。如果要记录此输出,则需要按照here
中显示的“查看标准输出和标准显示”的说明进行操作答案 6 :(得分:1)
try{
...
} catch (Exception e) {
Log.e(e.getClass().getName(), e.getMessage(), e.getCause());
}
答案 7 :(得分:0)
在Android环境中,我不得不将Exception转换为String:
try {
url = new URL(REGISTRATION_PATH);
urlConnection = (HttpURLConnection) url.openConnection();
} catch(MalformedURLException e) {
Log.i("MALFORMED URL", String.valueOf(e));
} catch(IOException e) {
Log.i("IOException", String.valueOf(e));
}
答案 8 :(得分:0)
科特琳解决方案:
您可以使用属于getStackTraceString()
类的辅助功能android.util.Log
在控制台上打印整个错误消息。
示例:
try {
// your code here
} catch (e: Exception) {
Log.e("TAG", "Exception occurred, stack trace: " + e.getStackTraceString());
}
答案 9 :(得分:0)
Kotlin 扩展。返回此 throwable 及其堆栈跟踪的详细描述。
e.stackTraceToString()