問題タブ [printstacktrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java での e.printStackTrace() の使用
これはおそらく初心者の質問ですが、私を助けてくれることを願っています. :)私はこのようなものを持っています:
NetBeans IDE を使用していますが、何らかの理由で printStackTrace に下線が引かれています。Alt+Enter を押すと、Throwable.printStackTrace() を削除する必要があると表示されます。これは何を意味するのでしょうか?これが何を意味するのか、誰かがより多くの洞察を与えることができますか? または、これを無視できますか?
ありがとう!
java - exception.printStackTrace() が悪い習慣と見なされるのはなぜですか?
例外のスタック トレースを出力することは悪い習慣であることを示唆する多くの資料があります。
たとえば、Checkstyle の RegexpSingleline チェックから:
このチェックは、[...] ex.printStacktrace() の呼び出しなどの一般的な悪い習慣を見つけるために使用できます。
ただし、例外の原因を追跡するのにスタック トレースが非常に役立つため、正当な理由を示す場所を見つけるのに苦労しています。私が知っていること:
スタック トレースがエンド ユーザーに表示されないようにする必要があります (ユーザー エクスペリエンスとセキュリティ上の理由から)。
スタック トレースの生成は比較的高価なプロセスです (ただし、ほとんどの「例外的な」状況では問題になることはほとんどありません)。
多くのロギング フレームワークがスタック トレースを出力します (私たちのログ フレームワークはそうではありません。簡単に変更することはできません)。
スタック トレースの出力は、エラー処理を意味しません。他の情報ログおよび例外処理と組み合わせる必要があります。
コードでスタック トレースを出力しないようにする他の理由は何ですか?
java - printStacktracej2meでNullPointerExceptionを発生させるInterruptedException
私はj2meでミッドレットを扱っており、次のことだけを行うこのスレッドクラス(たとえばchanと呼ばれる)があります。
そして、私はchan.interrupt();を試しています。次のことだけを行うメインのmidletコードから:
私が受け取っているのはこれです:
上記の行は、Threadのrunメソッド内にあります。
奇妙なスタックトレースを除いて、プログラムではすべてが正常に動作しているようです。Chanスレッドを削除しただけprintStacktrace
では、そのようなnullpointerExceptionは出力されません。
したがって、このnullpointerexceptionが何を伝えようとしているのか、また、interruptedexceptionのスタックトレースが1行で、残りのトレースが欠落している理由もわかりません。
エミュレータはOracleJava(TM)Platform Micro Edition SDK 3.0.5であり、Netbeansに取り組んでいます。
java - java スロー可能について
Android アプリケーションを開発するときに、CrashReport クラスを作成し、それを使用してサーバーにレポートを送信したいと考えています。
UncaughtExceptionHandler を実装した CrashHandler というクラスを作り、Activity で NullPoint エラーを発生させる例を意図的に作成します。このクラスは問題なく動作しますが、メソッド uncaughtException に少し問題があります:</p>
コード 1 行目は、スタック トレースを次のように出力します。
しかし、コードラインのみが表示されます:
次のものが表示されていないことに気付きました。
getCause() を呼び出していないことはわかっていますが、getCause() を使用しようとすると、throwable ではなく null が返されます。
スロー可能なクラスのソースコードを表示しようとしました...しかし、注目されました
getCause が null であるのに、printStackTrace に出力するエラーの原因がある理由を教えていただけますか??
java - 実行されたすべての関数のトレースを取得する方法
私はこの実行方法でスレッドを持っています:
このスレッドによって実行されたすべての関数をトレースするにはどうすればよいですか。 init() メソッドと refresh() メソッドは、多くの外部条件に基づいて他の多くの関数を呼び出すことができることに注意してください。
NullPointerExceptionを作成しようとしたり、ここで参照されているコード行の 1 つを run() メソッドの途中に配置しようとしましたが、常に run() メソッドである最後のトレースだけを持っています (私が使用したのと同じ行です)。トレースを印刷します)。
また
また
PS: 私はデバッガーにあまり詳しくないので、デバッガーでこれを実行できるかどうかわかりません。
python - Python で例外スタック トレースを処理する正しい方法
スタックの奥深くで例外を生成できるコードを書いています。これらの例外をキャッチし、エラー処理モジュールによる処理のためにそれらを送信する最上部に近いレイヤーがあります。私が望むのは、エラー処理モジュールがスタック トレースをエラー ログに出力できるようにすることですが、これを行う方法を理解するのは難しいと感じています。
背景に関する注意事項:
コードはマルチスレッド化されているため、sys.last_traceback の動作については確信が持てません。
例外自体のコンストラクターでスタックをキャプチャしようとしました。sys.last_traceback は、この場合は None になることがあり (未処理の例外の場合にのみ存在するため)、常に正しいとは限りません。私は現在、使用していじっています
self.stack = traceback.format_stack()[:-2]
例外のコンストラクターで、これは情報に関しては有望に見えますが、それを行う「正しい」方法のようには感じません
私が見つけたこれを行う方法のすべての例は、後のエラー処理モジュールではなく、except ブロックにスタック トレースを出力する方法を示しています。(たとえば、Python コードのメソッドから現在の呼び出し履歴を出力する を参照してください)
Python ドキュメント ( http://docs.python.org/library/traceback.html ) でtraceback モジュールをマイニングしましたが、これが私が望むことを行うかどうかを判断できませんでした。sys.last_traceback から取得する可能性があるため、トレースバックのフォーマットに主に関係しているようです。使用例がいくつかありますが、私がやろうとしていることと一致するものはありません。
これをやりたいと思ったのは私が初めてだとは思わないので、何かが欠けているに違いありません。正しい方向へのポインタは大歓迎です。
android - アンドロイド。例外処理
ユーザーがアプリケーションを使用しているときに例外が発生した場合に備えて、どこで例外が発生したかを特定できるようにしたいと考えています。printStackTrace() メソッドと同様のことをしたいと思います。(つまり、これはデバッグモードではなく、ビルドモード中です)
現在、すべてのクラスのほぼすべてのメソッドを try-catch ステートメント内に配置しました (各メソッドには、すべての命令を含む try-catch ステートメントがあります)。この時点で、「ツリー」またはスタックを表示できます。例外が発生した場合のメソッド。しかし、メソッド内のどこで例外が発生したかをより正確に示すために、何かの行番号を特定する方法はありますか? printStackTrace() を使用したときに表示されるものと同様です。
私は例外処理にあまり慣れていません。これを行うためのベストプラクティスは何ですか?
編集
そしてもう1つ。ビルド モードで printStackTrace() を使用すると、Logcat が使用できないため、コンテンツはどこに表示されますか? その情報を取得して何かできるでしょうか? または さらに良いことに、ビルドモード中に getStackTrace() を使用して、そこにあるものを文字列に変換し、どこかに出力できますか?
java - printStackTrace();は避けてください。代わりにロガー呼び出しを使用してください
私のアプリケーションでは、PMDを介してコードを実行しています。次のメッセージが表示されます。
- printStackTrace();は避けてください。代わりにロガー呼び出しを使用してください。
どういう意味ですか?
java - Throwable.printStackTraceがWriterではなくPrintWriterを使用するのはなぜですか?
ThrowableクラスでWriterではなくPrintWriterを使用するのはpublic void printStackTrace(PrintStream s)
なぜですか?
Writerは標準(特定の実装ではなく、インターフェイスへのコード)である必要があると思いますが、それは私が見逃しているものである可能性があるため、この質問です。
java - 例外のスタック トレースを byte[] 配列または ByteBuffer (Java) に変換する方が効率的ですか?
例外をデータベースに記録する必要があります。データベース API は、値を ByteBuffer または byte[] 配列として渡すことができると述べています。では、どちらがより効率的ですか?
対。
ByteBuffer を使用すると、特にデータベース メソッドに渡された後に処理される場合に、全体的な操作がより効率的になると思います。私は正しいですか?
(具体的には、例外を Hypertable に記録する必要があり、Thrift Java API を使用します。)