質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

1788閲覧

【Java】TimeoutExceptionにメッセージを追加したい

syake2020

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2021/07/27 09:58

JavaでTimeoutException をthrowする際、メッセージを追加したいです。
以下のように、括弧の中に文字列を含めた場合、プログラム実行するとNullPointerE xceptionが出力されてしまいます。

Java

1 2if(条件)3 throw new TimeoutException("ゲームオーバー"); 4

逆に、括弧の中には何も記載せずにプログラムを実行すると、TimeoutExceptionが出力されます。

目的としては、TimeoutExcepionとメッセージ"ゲームオーバー"を出力させたいのですが、実現方法がわかりません。
どうすれば実現できるでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/07/27 10:27 編集

NullPointerException例外は起きませんね。質問者さんのコードの別の部分の問題だと思います。 C> type Main.java import java.util.concurrent.*; public class Main { public static void main(String[] args) { try { throw new TimeoutException("ゲームオーバー"); } catch (TimeoutException ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } } } C>javac Main.java C>java Main ゲームオーバー java.util.concurrent.TimeoutException: ゲームオーバー at Main.main(Main.java:5) <<<実行例ここまで コードを略さず適切に引用し、実行例も質問文中に示しましょう。
jimbe

2021/07/27 16:11

この TimeoutException は実は自作品という可能性も・・・。
jimbe

2021/08/09 12:50

NullPointerException の詳細(ログ)と、TimeOutException の位置から NullPointerException が発生する位置までに通過するコードをご提示頂けますか。
guest

回答1

0

TimeoutExceptionがNullPointerExceptionを引き起こしているとは限りません。
なので1つずつ別の問題と仮定して、不具合のある場所と修正方法を調査検討してみてください。

1.NullPointerExceptionの解決方法

 NullPointerExceptionは、主に存在すると思っていたオブジェクトが存在せず、
nullの状態で、あるはずのメソッドを呼び出そうとして、発生します。

 この調査の糸口は、エラー出力の中で、自分の書いたクラスと行数が出ているところです。

 例えば、以下のような実装で、その下のエラーが出たとします。

Java

1public class Main { 2 3 static Object obj; 4 5 public static void main(String[] args) throws InterruptedException { 6 System.out.println(obj.getClass().toString()); 7 } 8}

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "Main.obj" is null
at casino.Main.main(Main.java:8)

エラー内容から、objがnullになっていることが分かるかと思います。

そこから、何故nullになっているのか原因を突き止め、
本来意図した動きになるように実装修正をしてあげればよいです。

2.TimeoutExcepionで指定したメッセージの出力方法

 TimeoutExcepionに限らず、例外を発生させると、
例外にマッチするcatchまで処理が飛ばされます。

以下のコードを実行した場合、
System.out.println("この文は出力されません。A");
System.out.println("この文は出力されません。B");
の処理が飛ばされて、
「ゲームオーバー」
とのみ表示されます。

Java

1public class Main { 2 3 public static void main(String[] args) { 4 5 try { 6 methodA(true); 7 8 System.out.println("この文は出力されません。B"); 9 } catch (TimeoutException e) { 10 System.out.println(e.getMessage()); 11 } 12 } 13 14 public static void methodA(boolean flg) throws TimeoutException { 15 if(flg) { 16 throw new TimeoutException("ゲームオーバー"); 17 } 18 19 System.out.println("この文は出力されません。A"); 20 } 21}

投稿2021/08/09 07:28

TetsujiMiwa

総合スコア1124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問