0

printStackTrace()Android アプリでの使用は避けるべきであり、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

誰かが私が間違っていることをアドバイスできますか?!

4

5 に答える 5

1

代わりにこれを行います:

  Log.d(TAG, e.getClass().getSimpleName() + ": " + e.getMessage());
于 2012-12-27T16:35:06.787 に答える
1

3 番目のパラメーターはありません。

SDK のドキュメントを読むと、android.utils.Logは 2 つのパラメーターを受け取ります。これは、使用される一般的なガイドラインです。

  1. メッセージを識別するタグ (通常は次のように定義できます)public static final String TAG="myActivity";
  2. メッセージです。これは文字列であるため、この場合は次のようにする必要があります。
試す {
   //何かをする  
キャッチ(例外e){
   Log.d(TAG, "一般的な例外:\n" + e);
}

文字列連結演算子の使用法に注意してください。

編集:注: ログには、実際に 3 番目のパラメーターを受け取ることができるオーバーロードがありますが、一般に、3 番目のパラメーターに関しては、 SDKThrowableに記載されている。それでも、2 つのパラメーターを使用するメソッドで十分なので、プロジェクトでそれを使用することはめったにありません。

于 2012-12-27T17:47:59.840 に答える
0

トップレベルのオブジェクトである一般的なExceptionを取得し、ポケモンの例外処理を回避し(すべてをキャッチする必要があります)、特定の例外をキャッチします。しかし、それは例外の詳細が表示されない理由ではありません。試してみてください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をご覧ください。

于 2012-12-27T16:36:08.863 に答える
0
Log.v(); // Verbose
Log.d(); // Debug
Log.i(); // Info
Log.w(); // Warning
Log.e(); // Error

詳細について

Log.e("error", String.valueOf(e.getMessage()));
于 2012-12-27T17:31:55.093 に答える
0

代わりにこれらを実行してください::

try {
 //do something  
    } 
catch (Exception e) {
    Log.e(TAG, "General Exception::"+e);
    } 
于 2012-12-27T17:53:21.193 に答える