[解決済み】Javaの未処理例外について
2022-01-28 20:55:07
質問
現在、カスタム例外の正しい方法を学んでいる最中ですが、ある問題につまずきました。このカスタム例外を投げるクラスのオブジェクトを利用しようとすると、私のIDEのデバッガ(私はIntelliJ ideaを使用しています)は、"Unhandled Exceptionと表示します。InsertExceptionName()" と表示されます。コードは、簡略化すると、次のようになります。この場合、ランダムに生成された数字が <0.5 であれば例外を返し、そうでなければ数字を返すはずなのですが、そうではありません。 何が足りないのでしょうか?
public class main {
public static void main(String[] args) {
double x=Math.random();
operation op=new operation();
op.execute(x);
}
}
-
public class operation {
public operation() {
}
public double execute(double x) throws RandomWeirdException {
if(x<0.5) {
throw new RandomWeirdException("<0.5");
}
return x;
}
}
-
public class RandomWeirdException extends Exception{
public RandomWeirdException() {
super();
}
public RandomWeirdException(String message) {
super(message);
}
}
解決方法は?
例外を返すとはどういう意味ですか?例外が発生すると、コールスタックにバブルアップされます。
この場合、処理をしていないことになります。それは
main
そのため、処理されない例外が発生します。
例外を処理したい場合は、その例外を処理するために
try-catch
ブロックを作成します。好ましくは
main
この場合
try {
// Code that might throw
// an exception.
} catch (Exception e) {
// Handle it.
}
別の解決策としては、以下のように指定することもできます。
main
は " を投げます。
RandomWeirdException
"ではなく
catch
というのは、そもそも
public static void main(String[] args) throws RandomWeirdException { ... }
このような場合は
throw
ただし、例外的なケースを合理的に処理できる場合はこの限りではありません。
もし、単に
catch
例外的なケースで意味のあることをせずにキャッチするために、時々エラーを隠しているのと同じことです。
関連
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み】Javaクラスの "型に解決できない"
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。