[解決済み] Runnableのrun()で例外をスローさせる方法はありますか?
質問
で呼んでいるメソッドが run() を実装しているクラスで 実行可能 を実装しているクラスでは、例外を投げるように設計されています。
しかし、Javaコンパイラはそれをさせてくれず、try/catchで囲むことを提案します。
問題は、try/catchで囲むことで私は その特定の run() は役に立たない。I する はその例外を投げたいのです。
もし私が
throws
を指定すると
run()
を呼び出すと、コンパイラは次のような文句を言います。
Exception is not compatible with throws clause in Runnable.run()
.
普段は、私はまったく問題なく を実行させなくても全く問題ありません。 が例外を投げないようにするのは全く問題ありません。しかし、私はその機能を持たなければならないユニークな状況を持っています。
この制限を回避するにはどうしたらよいでしょうか。
どのように解決するのですか?
を実装したクラスを渡したい場合。
Runnable
を実装したクラスを
Thread
フレームワークのルールに従わなければならないので、Ernest Friedman-Hill の回答を参照してください。
私は直感的に、あなたは
run
メソッドを直接呼び出し、呼び出し元のコードが例外を処理できるようにしたいのだと思います。
この問題に対する答えは簡単です。 この問題を解決するには
Runnable
インターフェースを使わず、チェックした例外を投げることができるようにシグネチャを変更した独自のインターフェースを作成することです。
public interface MyRunnable
{
void myRun ( ) throws MyException;
}
このインターフェイスを実際の
Runnable
(チェックされた例外を処理することで) Thread フレームワークで使用するのに適しています。
関連
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
java.sql.SQLException: 結果セットの開始前
-
配列定数は初期化子でのみ使用可能です。
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
htmlとwordの相互変換の実装(画像あり)
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] APKファイルからソースコードを取得する方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
javaの非静的メソッドを静的に参照することができない
-
プロジェクトの依存関係を解決できない。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
java send https request prompt java.security.cert.について。
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
Java の double データ型における 0.0 と -0.0 の問題
-
Java基礎 - マッピングとQ/A