/ * カスタム例外クラスの 私たちが使用するために、いくつかの珍しいクラスを定義する必要があり、十分な例外クラスのjavaの提供、 :フォーマットを パブリッククラスの例外/のRuntimeExceptionは{拡張XXXException 空のパラメータのコンストラクタを追加 して、コンストラクタの例外情報の追加 } 注: 1.カスタム例外クラス一般端例外、そのような記述は、例外クラスである 2が例外/のRuntimeExceptionを継承しなければならない * / パブリック クラスを RegisterException 延び{例外を // 空の引数で例外を追加 パブリックRegisterException(){ } // ソース表示異常公知の、親クラスのコンストラクタが例外情報を解くことを可能にする 公衆RegisterException(メッセージ文字列){ 超(メッセージ)。 } }
1 インポート; java.util.Scanner 2 。3 / ** 4 *異常な使用、シミュレーション登録機能 。5 * / 6 。7 パブリック クラス{IsRegister 。8 // ユーザ名(データベース)ストレージアレイ1が登録されている 9。 静的文字列[] usename = { "趙"、 "王"、 "太陽" }; 10 。11 公共 静的 ボイドメイン(文字列[]引数)/ *はスローRegisterException * / { 12は // 2.通常先端から取得したソースデータ 13が スキャナSCは= 新しい新しいスキャナ(System.in); 14 System.out.println( "あなたの名前を入力してください" ); 15 文字列名= sc.nextLine(); 16 checkUsename(名前); 17。 18れる } 19。 // 3.ユーザによって入力されたデータを決定するための方法で定義 20 公共の 静的な 無効 checkUsename(文字列名)/ * RegisterExceptionスロー* / { 21がされる ため、{:(usename文字列usename) 22がある のIF (usename.equals(名)){ 23は 試し{ 24 スロー 新しい新 RegisterException( "登録ユーザ"); // 実行時例外、キャッチは投げと試してみることができない 25 } キャッチ(RegisterException E){ 26は e.printStackTrace(); 27 リターン ; // エンド 28 } 29 } 30 } 31 //は正常に登録さ 32 のSystem.out.println( "正常に登録を" ); 33 } 34 }
/ * //すべての例外のThrowableスーパークラス 例外は-サブクラス- {}キャッチ{}試すことができます例外をコンパイル、またはスロー のRuntimeException -異常動作を、JVMハンドルせ、処理できない エラー-処理できない、あなたがソースコードを変更する必要があり、メモリオーバーフロー、システムクラッシュ-サブクラス 例外処理:例外内部メソッド、例外処理ロジック、そうでない場合があるかどうか -コンテンツ、理由は、発信者の位置はJVM--は方法(メイン)を見つける報告 に異常があるかどうかを確認します-処理ロジック、そうでない場合は- JVMへの復帰、JVMのコンソール印刷、およびプログラム中断 異常//実行時の スローキー 役割を:あなたはで指定されたメソッドで指定されたキーワード投げる投げる例外使用できる 形式を:(新しいxxxExceptionを投げます「結果の異常な理由」) 注:1.throwキーワードは、プロセス内でなければなりません 2.throwキーワード新規または例外サブクラスのオブジェクトでなければなりません 3.throwキーワード指定された例外オブジェクトがスローされ、私たちはこれに対処しなければなりませんオブジェクト 1.throwキーワードは+印刷異常に(JVMへ、のRuntimeExceptionの作成またはサブクラスのオブジェクトの背後にあります プログラム) キーワードの作成の背後にある2.throwは(コードを書く)異常なコンパイル、またはスロー、またはキャッチしようとしている 仕事を、合法化をチェックする他の方法に渡されなければならない、違法は、例外をスローする方法があります呼び出し元に //コンパイル例外は 最初の方法の例外処理に対処することでした:キーワードはスロー 役割: 内部メソッドが例外オブジェクトをスローしたとき、我々は、この例外オブジェクトに対処しなければならない 例外オブジェクトの宣言をスローします呼び出し元に(内容、原因、場所)、それは扱っていない、最終的にはJVMのに配信されます フォーマット: 修飾子戻り値の型メソッド名(パラメータリスト)がXXXException、XXX、XXX {スロー スロー新しい新XXXException(「例外の原因を」) } 注:例外文の後ろでなければならない例外またはサブクラススロー 例外オブジェクトが複数存在する場合、内部の方法を、複数のスローを宣言しなければならない 親オブジェクトに例外オブジェクトは子を有する場合、直接親例外を宣言 一度そのように宣言、またメソッドが例外をスローし、それが例外を処理、またはコールを続けなければなりません 同様に、JVMに最後の発信者の最後のメソッドにステートメント例外をスロー中断 または中断されることなく、自分の治療を(通常はこれが優れている)をキャッチしてみてください... キャッチを試みる:例外処理の第2の実施形態を、その処理 フォーマット:試みる{ 可能例外コード (変数が異常な変数を受信試みる定義例外)}キャッチ{ 例外処理ロジックは、ログ情報の記録に動作します } .. 。 キャッチ(例外は異常な変数を受け取る変数試みを定義){ 例外処理ロジックは、ログ情報の記録に動作します } 注:オブジェクトの例外があるかもしれない試して、キャッチ複数を処理する必要がある 異常が試みで発生した場合例外処理ロジックキャッチを行いますが、コードが実行後に続く 例外クラスの親子関係のクラスでキャッチは、サブクラスが上(曖昧)で記述する必要がある場合は、例外すべての例外クラスは、 最終的に しようと{:フォーマット 可能性異常コード }キャッチ(例外は、変数を定義する異常な変数を受信してみてください){ 例外処理ロジックは、ログ情報の記録に動作する } ... キャッチ(例外は異常な変数を受け取る変数試みを定義){ 例外処理ロジックは、ログ情報の記録に動作する 最終的} { コードが異常であるかかわらず、そこに実行される } 注:最終的に単独で使用することができない、異常な手順があるかどうかにかかわらず、最終的に一般のためのリソースを解放、トライで使用されなければなりません、リソースを解放するために必要とされる * / インポートjava.io.FileNotFoundException、 インポートにjava.io.IOException; インポートjava.util.Listには、 パブリック クラスのThrowable { 公共 静的 ボイドメイン(文字列[]引数)は、/ * IOExceptionがスロー* / { / / RuntimeExceptionは、JVMに、独自に対処することができない // [5] INT [] NUM =新しい新しいINT; // getElement(NUM ,. 6); //例外をコンパイルし、それがスロー使用して、独自の治療を必要とする // 上記の異常なJVMは、プログラムが中断された聞かせているため実行されません;:(「\\ B.TXT C」)readFileのを // キャッチを使用してみてください 試して{ readFileC(「C:\ \ B.TXT「); @ 可能異常コード } キャッチ(ArrayIndexOutOfBoundsExceptionがE){ // 例外文をスロー何、それはオブジェクト受信生成するために使用される @の例外処理ロジック / * Throwableクラスは3つ定義します方法A: 文字列のtoString() -このスロー可能オブジェクトの詳細メッセージ文字列を返します。 StackTraceElement [] getStackTraceメソッド() -このメソッドが呼び出されたJVMのデフォルトの印刷、スタックトレース情報へ)(のprintStackTraceによってプログラムからアクセスできるようにします 文字列のgetMessage()は-このスロー可能オブジェクトの短い説明を返します。 * / System.out.println(e.toString()); // java.lang.ArrayIndexOutOfBoundsException:長さの境界のインデックス4 3 OUT のSystem.out.println(e.getMessage()); // 。OUTの境界のインデックス4 3長さ のSystem.out.println(e.getStackTrace()); // [Ljava.lang.StackTraceElement; 4e50df2e @ } 最後に{ するSystem.out.println( "リリースリソース"); // 最後に異常が行われているかどうか } のSystem.out.println( "労働が強すぎる中断されていません" ); } 公共の 静的な 無効 getElement(int型 [] arrが、INTインデックスは){ // 実行時例外は、自分の扱うことができない IF(インデックス> 4 ||インデックス<0 ){ スロー 新新は、ArrayIndexOutOfBoundsException(「問題の配列インデックスを」); // は、ArrayIndexOutOfBoundsExceptionランタイム例外、JVMに、する必要はありませんスロー } // のNullPointerExceptionの決意方法を持っているオブジェクトがヌル上記のコード内のオブジェクト簡素化されているか否かを判断することができる // 形式Objects.requireNonNull(オブジェクト名); // 他の過負荷Objects.requireNonNullは、(オブジェクト名が、「スロー情報「) } / * メソッドを定義し、使用してファイル転送合法化決意のパスがスロー にFileNotFoundException IOExceptionが延びているため にIOException文ができ、従って * / パブリック 静的 ボイドreadFileの(文字列srcが)スローIOExceptionが{ // 例外ファイルの場所を投げる IF(src.equals( "C:\\ A.TXT"! )){ スロー 新しい新にFileNotFoundException( "位置がファイルと一致しません" ); } // スロー例外ファイルの接尾辞 IF(src.endsWith( "TXT"!。 )){ スロー 新新のIOException( "位置がファイルを一致しません" ); } } 公共の 静的な 無効readFileC(文字列SRC){ 一覧 <整数> =整数List.of (1、2、。3。); integers.get( 4。); } }