問題タブ [throwable]
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 - 例外以外のものにThrowableを使用する
エラーのコンテキストで、Throwable/Exception を常に見てきました。Throwable
しかし、再帰的なメソッド呼び出しのスタックから抜け出すためだけにa を拡張すると本当に便利な状況を思いつくことができます。たとえば、再帰的検索によってツリー内のオブジェクトを見つけて返そうとしたとします。見つけたら、いくつかに突き刺してCarrier extends Throwable
投げ、再帰メソッドを呼び出すメソッドでキャッチします。
肯定的: 再帰呼び出しのリターン ロジックについて心配する必要はありません。必要なものが見つかったので、その参照をメソッド スタックに戻す方法を心配する必要はありません。
否定的: 必要のないスタック トレースがあります。また、try/catch
ブロックは直感に反します。
以下はばかばかしいほど単純な使用法です。
問題は、同じことを達成するためのより良い方法があるかということです。また、このように物事を行うことについて本質的に悪いことはありますか?
java - java スロー可能について
Android アプリケーションを開発するときに、CrashReport クラスを作成し、それを使用してサーバーにレポートを送信したいと考えています。
UncaughtExceptionHandler を実装した CrashHandler というクラスを作り、Activity で NullPoint エラーを発生させる例を意図的に作成します。このクラスは問題なく動作しますが、メソッド uncaughtException に少し問題があります:</p>
コード 1 行目は、スタック トレースを次のように出力します。
しかし、コードラインのみが表示されます:
次のものが表示されていないことに気付きました。
getCause() を呼び出していないことはわかっていますが、getCause() を使用しようとすると、throwable ではなく null が返されます。
スロー可能なクラスのソースコードを表示しようとしました...しかし、注目されました
getCause が null であるのに、printStackTrace に出力するエラーの原因がある理由を教えていただけますか??
java - main()でスロー可能なログ
Throwable
さまざまな投稿で概説されている理由から、キャッチすることはお勧めできません。しかし、メインを以下のように構成することは理にかなっていますか?Throwable行が削除された場合、エラーはログに記録されません。
android - Android スレッドとスロー可能オブジェクト
I/O を実行するクラス (ABC と呼びましょう) があります。FileOutputStream.close のようないくつかのものは、それらの周りに try catch ブロックを使用する必要があります。さらに、ユーザーと私が何が起こっているのかを知るのに役立つ独自のスロー可能なオブジェクトを作成しました。
このクラスでは、それを作成するアクティビティのコンテキストで渡し、スロー可能なテキストでダイアログ ボックスを作成して警告するようにしました。
これが私の問題です。このクラスを新しいスレッドから実行する必要がありますが、スロー可能なテキストから情報を取得したいと考えています。
たとえば、これは私のクラスの典型的な catch 句のようです。
私はただのようなことをしますか
これはアラートダイアログの代わりにABCクラス内にありますか? 次に、警告ダイアログを、Runnable インターフェイスの run メソッドが呼び出される try catch に移動するか、または asynchtask のバックグラウンドで実行しますか?
java - Java - 例外にスロー可能
現在、play2 フレームワークを使用しています。
スローしているクラスがいくつかありますがexceptions
、play2s グローバルonError
ハンドラーは例外ではなくスロー可能を使用します。
たとえば、私のクラスの1つがNoSessionException
. スロー可能なオブジェクトが である場合、そのオブジェクトをチェックできますNoSessionException
か?
java - Java:スロー可能/例外のスタックトレース全体をByteBufferに変換する最も効率的な方法は?
スロー可能/例外のスタック トレース全体を ByteBuffer (Java) に変換する最も効率的な方法は何ですか?
具体的には、例外全体をデータベースに記録する必要があります。Thread.currentThread().getStackTrace() は、StackTraceElement[] 配列のリストを返します。
では、Throwable クラスに printStackTrace() メソッドはありますか?
java - Java Throwable の addSuppressed が何をするのかを理解できる専門家が必要ですか?
したがって、JavaにはThrowableにメソッドがあります
そして、これはそれが何をするかです:
この例外を配信するために抑制された例外に、指定された例外を追加します。このメソッドはスレッドセーフであり、通常は try-with-resources ステートメントによって (自動的かつ暗黙的に) 呼び出されます。
..私はこれに困惑しています、「この例外を配信するために抑制された例外に対する指定された例外」とは何ですか。?
java - ロギングの目的ですべてのjava.lang.Errorをキャッチし、スタックを上に移動できるようにします
短いバージョン:コードの特定のセクションでスローされた ものをすべてキャッチしjava.lang.Error
てログに記録し、まったくキャッチしなかったかのようにコールスタックを伝播できるようにするにはどうすればよいですか?
ロングバージョン...
java.lang.Error
コードのセクションで、それらをログに記録するためにすべてをキャッチしたいと思います。しかし、私はまたError
、コールスタックを上っていくように継続させたいので、動作はまったくキャッチしなかった場合と同じになります。
さらに、すべてをキャッチしてログに記録しjava.lang.Exception
、それらにもコールスタックを伝播させたいと思います。
私はこれを試しました...
...しかし、それに関する問題は、スローするために呼び出しスタックの上位にあるすべてのメソッドを変更する必要がThrowable
あり、それらのメソッドの一部は変更するためのものではありません(私のメソッドはサードパーティフレームワークのメソッドによって呼び出されます)。
何か別のものを入れて投げるという、ある種のラッピングテクニックには満足しますが、まったく捕まえなかったかのように、自然な形で上向きに伝播Throwable
させたいと思います。java.lang.Error
提案?
編集: 「なぜ私はこれをしたいのですか?」と尋ねられました。これは私が明確にする良い質問だと思います。これは私の会社で使用するためのフレームワークです。システム管理者が含めるのを忘れている可能性があるのは、jarに含まれている他のフレームワークに依存します。その場合、コードの特定の場所にNoClassDefFoundErrorがあります。ただし、ブラウザにこのエラーが表示されるのはユーザーのみであり、サーバーログには表示されません。システム管理者がこのエラーに対処するための指示を持っているので、このエラーが発生したことをシステム管理者が知ることができるように、ログに記録したいと思います。
java - スロー可能なオブジェクトでのgetCause()メソッドのオーバーロード
スロー可能なオブジェクトでgetCause()メソッドをオーバーロードするにはどうすればよいでしょうか。私は次のものを持っていますが、文字列でオーバーロードできないと言っているので、機能していないようです。
java - ユーザー提供のコードを実行するコントロール ライブラリは、例外またはスロー可能オブジェクトをインターセプトする必要がありますか?
Exception
ここでは、との違いに関する一般的な質問を数多く見てきましたThrowable
。私は違いを知っており、より具体的な質問があります。
私は、ユーザーが提供するいくつかのコードをバインドして一緒に実行するライブラリを作成しています。ピースの 1 つが失敗すると、計算全体が破棄されます。リソースの使用をクリーンに保つために、ユーザーは、そのようなイベントが発生したときに実行されるファイナライザーを提供することもできます。パターンは次のようなものです。
私の質問は次のとおりです。上記のように sをインターセプトして再スローする必要がありますかException
、それとも s もインターセプトする必要がありThrowable
ますか? 発生した場合Error
、その可能性はありますか
- JVM は回復しますか? (では、ファイナライザーを実行する意味はありますか?)
- JVM は、実際に実行できる状態になりますか?
また、ファイナライザーを実行するときは、例外をキャッチして無視するので、登録されている他のファイナライザーが実行される可能性があります。たとえば、次のようになります。
繰り返しますが、s だけをインターセプトする必要がありますか?Exception
またはThrowable
s もインターセプトする必要がありますか? sを無視して再スローしないことError
は、より問題があるようです。