自定义异常类的练习
package com.learn.demo04.MyException;import java.util.Scanner;/*要求:我們模擬注冊操作,如果用戶名已存在,則拋出異常并提示:親,該用戶名已經被注冊。分析:1.使用數組保存已經注冊過的用戶名(數據庫)2.使用Scanner獲取用戶輸入的注冊的用戶名(前端,頁面)3.定義一個方法,對用戶輸入的中注冊的用戶名進行判斷遍歷存儲已經注冊過用戶名的數組,獲取每一個用戶名使用獲取到的用戶名和用戶輸入的用戶名比較true:用戶名已經存在,拋出RegisterException異常,告知用戶"親,該用戶名已經被注冊";false:繼續遍歷比較如果循環結束了,還沒有找到重復的用戶名,提示用戶"恭喜您,注冊成功!";*/
public class Demo01RegisterException {// 1.使用數組保存已經注冊過的用戶名(數據庫)static String[] usernames = {"張三","李四","王五"};public static void main(String[] args) /*throws RegisterException*/ {//2.使用Scanner獲取用戶輸入的注冊的用戶名(前端,頁面)Scanner sc = new Scanner(System.in);System.out.println("請輸入您要注冊的用戶名:");String username = sc.next();checkUsername(username);}//3.定義一個方法,對用戶輸入的中注冊的用戶名進行判斷public static void checkUsername(String username) /*throws RegisterException*/ {//遍歷存儲已經注冊過用戶名的數組,獲取每一個用戶名for (String name : usernames) {//使用獲取到的用戶名和用戶輸入的用戶名比較if(name.equals(username)){//true:用戶名已經存在,拋出RegisterException異常,告知用戶"親,該用戶名已經被注冊";try {throw new RegisterException("親,該用戶名已經被注冊");} catch (RegisterException e) {e.printStackTrace();return; //結束方法}}}//如果循環結束了,還沒有找到重復的用戶名,提示用戶"恭喜您,注冊成功!";System.out.println("恭喜您,注冊成功!");}
}
package com.learn.demo04.MyException;
/*自定義異常類:java提供的異常類,不夠我們使用,需要自己定義一些異常類格式:public class XXXExcepiton extends Exception | RuntimeException{添加一個空參數的構造方法添加一個帶異常信息的構造方法}注意:1.自定義異常類一般都是以Exception結尾,說明該類是一個異常類2.自定義異常類,必須的繼承Exception或者RuntimeException繼承Exception:那么自定義的異常類就是一個編譯期異常,如果方法內部拋出了編譯期異常,就必須處理這個異常,要么throws,要么try...catch繼承RuntimeException:那么自定義的異常類就是一個運行期異常,無需處理,交給虛擬機處理(中斷處理)*/
public class RegisterException extends /*Exception*/ RuntimeException{//添加一個空參數的構造方法public RegisterException(){super();}/*添加一個帶異常信息的構造方法查看源碼發現,所有的異常類都會有一個帶異常信息的構造方法,方法內部會調用父類帶異常信息的構造方法,讓父類來處理這個異常信息*/public RegisterException(String message){super(message);}
}
package com.learn.demo04.MyException;import java.util.Scanner;/*要求:我們模擬注冊操作,如果用戶名已存在,則拋出異常并提示:親,該用戶名已經被注冊。分析:1.使用數組保存已經注冊過的用戶名(數據庫)2.使用Scanner獲取用戶輸入的注冊的用戶名(前端,頁面)3.定義一個方法,對用戶輸入的中注冊的用戶名進行判斷遍歷存儲已經注冊過用戶名的數組,獲取每一個用戶名使用獲取到的用戶名和用戶輸入的用戶名比較true:用戶名已經存在,拋出RegisterException異常,告知用戶"親,該用戶名已經被注冊";false:繼續遍歷比較如果循環結束了,還沒有找到重復的用戶名,提示用戶"恭喜您,注冊成功!";*/
public class Demo02RegisterException {// 1.使用數組保存已經注冊過的用戶名(數據庫)static String[] usernames = {"張三","李四","王五"};public static void main(String[] args) {//2.使用Scanner獲取用戶輸入的注冊的用戶名(前端,頁面)Scanner sc = new Scanner(System.in);System.out.println("請輸入您要注冊的用戶名:");String username = sc.next();checkUsername(username);}//3.定義一個方法,對用戶輸入的中注冊的用戶名進行判斷public static void checkUsername(String username) {//遍歷存儲已經注冊過用戶名的數組,獲取每一個用戶名for (String name : usernames) {//使用獲取到的用戶名和用戶輸入的用戶名比較if(name.equals(username)){//true:用戶名已經存在,拋出RegisterException異常,告知用戶"親,該用戶名已經被注冊";throw new RegisterException("親,該用戶名已經被注冊");//拋出運行期異常,無需處理,交給JVM處理,中斷處理}}//如果循環結束了,還沒有找到重復的用戶名,提示用戶"恭喜您,注冊成功!";System.out.println("恭喜您,注冊成功!");}
}
?
總結
- 上一篇: 利用solr实现商品的搜索功能
- 下一篇: 冗余的Runnable代码