始める無料で始める

Exception オブジェクト

ひとつのコード片が複数の例外を投げることは珍しくありません。この状況に対処する方法のひとつは、すべての例外を try-catch で受け取り、Exception オブジェクトを使って何が起きたかを特定し、デバッグのために Exception から情報を出力することです。

ここでは、SplitTheBill アプリケーションを再度修正し、汎用的な Exceptioncatch して、問題の原因を把握するために Exception オブジェクトのデータを使います。Exception オブジェクトには、問題に至るメソッドの経路(トレース)を含む、多くの有用な情報が入っています。

この演習はコースの一部です

Javaにおけるデータ型と例外処理

コースを見る

演習の手順

  • catch ブロックで、catch (Exception e) を使ってあらゆる Exception を捕捉します。
  • catch ブロック内で、Exception の参照(e)と getClass() メソッドを使い、捕捉した例外の型(クラス)を表示します。
  • Exception の参照(e)と getMessage() メソッドを使って、例外メッセージを出力します。
  • Exception の参照(e)と printStackTrace() メソッドを使って、出力ストリームに「スタックトレース」を表示します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

class SplitTheBill {
	public static void main(String[] args) {
		BigDecimal bill = new BigDecimal(125.50);
		computeEachBill(bill, 5);
		computeEachBill(bill, 0);
	}

	public static void computeEachBill(BigDecimal bill, int people) {
		try {
			BigDecimal numPeople = new BigDecimal(people);
			BigDecimal individualBill = bill.divide(numPeople);
			System.out.println("Bill for each person is: " + individualBill);
            // Catch any exception
		} catch (____ ____) {
			System.out.println("You didn't provide a positive number of people to split the bill among.");
            // Print the type (class) of exception
			System.out.println("Type of exception: " + ____.____());
            // Print the exception message
			System.out.println(____.____());
            // Print the stack trace
            ____.____();
		}
	}
}
コードを編集して実行