カスタム例外クラス
私たちは、すべての例外が例外であることを知っているので、我々は、カスタム例外を必要とするが、それにExceptionクラスを拡張するだけで済みます。次のように、独自の例外クラスをしてみましょう:
/ ** *カスタム例外 * / // 継承例外 パブリック クラス MyException 延び例外{ 公共MyException(文字メッセージ){ // print文の異常 スーパー(メッセージ); } }
第二に、設計法は、例外がスローされます
次のように今、私たちは、例外をスローするメソッドを設計することができます。
パブリック クラスの学生は{ // 例外がスローされ表示、あなたがより多くを捨てることができ、 //は、このメソッドが例外をスローまたはキャッチし続けなければならない呼び出す 公共 ボイド(STUをint型年齢を)投げるMyException、はArithmeticException { IF(年齢<18 ){ スロー 新しい新 MyException( "ハンサム、あなたは十分に古いではありません" ); } System.out.printlnは( "ようこそ、サインアップします!" ); } }
フォーマットは方法の後ろにスローされることに注意すると、キーワードをスローし、あなたは、カンマで区切ることができ、複数の例外をスローすることができます。私たちは、年齢に求めるプログラムでは18以上でなければなりません、そうでない場合は、表示された例外をスローし、ここで使用されるキーワードはスローです。私達はちょうど新しい例外クラスのオブジェクトを投げます。
第三に、試験方法
私たちは、メインメソッドで、このメソッドを呼び出します。私たちが設計どおり、このメソッドは例外をスローします。私たちは、コンパイラを呼び出すすべての時間が例外を処理するために私たちを必要とします。我々は2つのアプローチがあります
1、試して使用して...キャッチ...例外をキャッチ
この方法は、2つの例外がスローされますので、私たちの両方をキャプチャする必要があります。コードは以下の通りであります:
パブリック クラスファイル名を指定して実行{ 公共の 静的な 無効メイン(文字列[] args)を{ 学生学生 = 新学生(); 試す{ student.stu( 18 )。 } キャッチ(はArithmeticException電子){ // TODO自動生成キャッチブロック e.printStackTrace(); } キャッチ(MyException電子){ // TODO自動生成キャッチブロック e.printStackTrace(); } } }
2は、メソッド呼び出しを使用して投げ続けるスローされます。
我々はまた、2つの例外をスローする必要があります。次のようにコードがある: パブリック クラスを実行{ 公共 静的 ボイドメイン(文字列[]引数)がスローはArithmeticException、 MyException { 学生学生 = 新しい新しい学生を(); student.stu( 18です); } }