【Java】カスタム例外

カスタム例外:

Java が提供する例外クラスだけでは使用できません。いくつかの例外クラスを自分で定義する必要があります。

フォーマット:

       public class XXException extends Exception|RuntimeException{

          空のパラメータを持つコンストラクタを追加する

          例外情報を含むコンストラクターを追加する

}

知らせ:

       1. カスタム例外クラスは通常、Exception で終わり、クラスが例外クラスであることを示します。

        2. カスタム例外クラスは Exception または RuntimeException を継承する必要があります。

              例外の継承: カスタム例外クラスはコンパイル時例外です。コンパイル時例外が発生した場合は、スローするかキャッチを試みて処理する必要があります。

              Inherit RuntimeException: カスタム例外は、処理する必要のないランタイム例外であり、処理および割り込み処理のために仮想マシンに渡されます。

 

 

演習: ユーザー操作をシミュレートします。ユーザーがすでに存在する場合はエラーが表示され、存在しない場合は成功が表示されます。

 

分析します:

1. 登録したユーザー名(データベース)を配列で保存する

2. スキャナを使用して、ユーザーが入力した登録ユーザー名を取得します(フロントエンド、ページ)

3. ユーザーが入力したユーザー名の判定方法を定義する

      登録されたユーザー名の配列を走査して各ユーザー名を取得します

      取得したユーザー名を使用して、ユーザーが入力したユーザー名と比較します。

      真実:

           ユーザー名はすでに存在しており、RegisterException がスローされ、ユーザーに「このユーザー名はすでに登録されています」と通知されます。

     間違い:

           配列の反復処理を続ける

      ループが終了し、重複するユーザー名が見つからない場合は、ユーザーに「おめでとうございます。登録は成功しました!」というプロンプトが表示されます。

カスタム MyException クラス

Exception インターフェイスを拡張し、出力ステートメントをカスタマイズできます

package test;


import java.util.Scanner;


public class MyException extends Exception{

//添加一个空参数的构造方法

public MyException() {

super();

}

//添加一个带异常信息的构造方法

//查看源码发现,所有异常类都会有一个带异常信息的构造方法,方法内部调用父类异常信息的构造方法,

//让父类处理

public MyException(String message){

super(message);

}


}


 

package test;


import java.util.Scanner;


public class DemoMyException {

static String[] s = {"张三","李四","王五"};


public static void main(String[] args) throws Exception{

System.out.println("请输入用户名:");

Scanner sc = new Scanner(System.in);

String user = sc.next();

checkName(user);

}


public static void checkName(String username) throws MyException{

for(String name: s){

if(username.equals(name)){

throw new MyException("亲,该用户名已经被注册了!");

}

}

System.out.println("恭喜您,注册成功!");

}

}

ここでは Exception コンパイル例外があるため、処理する必要があるため、checkName の元の MyException クラスに throw をスローして処理します。

2. Extends runtimeException の場合は、次の図に示すように、スローせずに JVM によって直接処理できます。

 

 

 

おすすめ

転載: blog.csdn.net/qq_39696563/article/details/106815798