[解決済み] キャッチ不能なChuckNorrisException
2022-03-17 21:43:20
質問
でコードのスニペットを構成することは可能でしょうか?
Java
を作るような仮想的な
java.lang.ChuckNorrisException
アンキャッチャブル?
思いついたのは、例えばインターセプターを使うか、あるいは アスペクト指向プログラミング .
解決方法は?
試していないのでわかりませんが、このように
JVM
を投げるようなコードをコンパイルすることができるかもしれません。
ChuckNorrisException
のクラス定義を提供し、実行時に
ChuckNorrisException
どの
を拡張していない。
.
UPDATEしています。
うまくいきません。ベリファイアエラーが発生します。
Exception in thread "main" java.lang.VerifyError: (class: TestThrow, method: ma\
in signature: ([Ljava/lang/String;)V) Can only throw Throwable objects
Could not find the main class: TestThrow. Program will exit.
UPDATE 2:
実は、バイトコードベリファイアを無効にすると、これが使えるようになるんです! (
-Xverify:none
)
UPDATE 3:
自宅からフォローする人のために、ここに完全なスクリプトがあります。
以下のクラスを作成します。
public class ChuckNorrisException
extends RuntimeException // <- Comment out this line on second compilation
{
public ChuckNorrisException() { }
}
public class TestVillain {
public static void main(String[] args) {
try {
throw new ChuckNorrisException();
}
catch(Throwable t) {
System.out.println("Gotcha!");
}
finally {
System.out.println("The end.");
}
}
}
クラスをコンパイルします。
javac -cp . TestVillain.java ChuckNorrisException.java
実行します。
java -cp . TestVillain
Gotcha!
The end.
コメントアウト "extendsRuntimeException"および
リコンパイル
ChuckNorrisException.java
のみ
:
javac -cp . ChuckNorrisException.java
実行します。
java -cp . TestVillain
Exception in thread "main" java.lang.VerifyError: (class: TestVillain, method: main signature: ([Ljava/lang/String;)V) Can only throw Throwable objects
Could not find the main class: TestVillain. Program will exit.
検証を行わずに実行する。
java -Xverify:none -cp . TestVillain
The end.
Exception in thread "main"
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
javaで非静的な解を静的な参照にすることができない
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み] Javaにおけるチェック済み例外とチェックされていない例外の理解
-
[解決済み] 静的変数が悪とされるのはなぜですか?
-
[解決済み] Javaインターフェースでスタティックメソッドを定義できないのはなぜですか?
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み】アスペクト指向プログラミングとオブジェクト指向プログラミングの比較
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
プロローグでのコンテンツは禁止されています
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
Javaエラーメッセージがenclosingクラスでない
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
java 例外。Javaツールの初期化
-
このラインで複数のマーカーを解決する方法
-
ローカルリソースのロードが許可されていない場合の解決策