- 首頁|
- 網(wǎng)校|
- 焚題庫|
- APP |
-
微信公眾號(hào)
假設(shè)在某倉庫管理系統(tǒng)的登錄界面中需要輸入用戶名和密碼,其中用戶名只能由 6~10 位數(shù)字組成,密碼只能有 6 位,任何不符合用戶名或者密碼要求的情況都視為異常,并且需要捕獲并處理該異常。
下面使用自定義異常類來完成對(duì)用戶登錄信息的驗(yàn)證功能,實(shí)現(xiàn)步驟如下。
1)編寫自定義異常類 LoginException,該類繼承自 Exception。在 LoginException 類中包含兩個(gè)構(gòu)造方法,分別為無參的構(gòu)造方法和含有一個(gè)參數(shù)的構(gòu)造方法,代碼如下:
public class LoginException extends Exception { public LoginException() { super(); } public LoginException(String msg) { super(msg); }}
2)創(chuàng)建測(cè)試類 Test08,在該類中定義 validateLogin() 方法,用于對(duì)用戶名和密碼進(jìn)行驗(yàn)證。當(dāng)用戶名或者密碼不符合要求時(shí),使用自定義異常類 LoginException 輸出相應(yīng)的異常信息。validateLogin() 方法的定義如下:
public boolean validateLogin(String username,String pwd) { boolean con = false; // 用戶名和密碼是否正確 boolean conUname = false; // 用戶名格式是否正確 try { if (username.length() >= 6 && username.length() <= 10) { for (int i = 0;i < username.length();i++) { char ch = username.charAt(i); // 獲取每一個(gè)字符 if (ch >= '0' && ch <= '9') { // 判斷字符是否為0~9的數(shù)字 conUname = true; // 設(shè)置 conUname 變量值為 true } else { // 如果字符不是0~9的數(shù)字,則拋出LoginException異常 conUname = false; throw new LoginException("用戶名中包含有非數(shù)字的字符!"); } } } else { // 如果用戶名長(zhǎng)度不在6~10位之間,拋出異常 throw new LoginException("用戶名長(zhǎng)度必 須在6〜10位之間!"); } if (conUname) { // 如果用戶名格式正確,判斷密碼長(zhǎng)度 if (pwd.length() == 6) { // 如果密碼長(zhǎng)度等于6 con=true; // 設(shè)置con變量的值為true,表示登錄信息符合要求 } else { // 如果密碼長(zhǎng)度不等于6,拋出異常 con = false; throw new LoginException("密碼長(zhǎng)度必 須為 6 位!"); } } } catch(LoginException e) { // 捕獲 LoginException 異常 System.out.println(e.getMessage()); } return con;}
3)在 Test08 類中添加 main() 方法,調(diào)用 validateLogin() 方法,如果該方法返回 true,則輸出登錄成功的信息。main() 方法的定義如下:
填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽java課程!害怕學(xué)不會(huì)?助教陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國推薦就業(yè)!
public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("用戶名:"); String username = input.next(); System.out.println("密碼:"); String password = input.next(); Test08 lt = new Test08 (); boolean con = lt.validateLogin(username,password); // 調(diào)用 validateLogin() 方法 if (con) { System.out.println("登錄成功!"); }}
在本程序的 validateLogin() 方法中使用條件控制語句和 for 循環(huán)語句分別對(duì)用戶名和密碼進(jìn)行了驗(yàn)證。任何不符合用戶名或者密碼要求的情況都拋出自定義異常 LoginException,并在 catch 語句中捕獲該異常,輸出異常信息。
運(yùn)行程序,當(dāng)用戶輸入的用戶名含有非數(shù)字字符時(shí)將拋出 LoginException 異常,執(zhí)行 catch 語句塊中的代碼打印異常信息,如下所示。
用戶名:
xiake8!
密碼:
123456
用戶名中包含有非數(shù)字的字符!
當(dāng)用戶輸入的用戶名長(zhǎng)度不在 6~10 位時(shí)同樣會(huì)拋出 LoginException 異常并打印異常信息,如下所示。
用戶名:
administrator
密碼:
123456
用戶名長(zhǎng)度必 須在6~10位之間!
當(dāng)用戶輸入的登錄密碼不等于 6 位時(shí)也會(huì)拋出 LogWException 異常,并打印出異常信息,如下所示。
用戶名:
20181024
密碼:
12345
密碼長(zhǎng)度必 須為 6 位!
當(dāng)用戶輸入的用戶名和密碼都符合要求時(shí),則打印登錄成功的信息,如下所示。
用戶名:
20181024
密碼:
123456
登錄成功!
上一篇:Java自定義異常
下一篇: 沒有了
初級(jí)會(huì)計(jì)職稱中級(jí)會(huì)計(jì)職稱經(jīng)濟(jì)師注冊(cè)會(huì)計(jì)師證券從業(yè)銀行從業(yè)會(huì)計(jì)實(shí)操統(tǒng)計(jì)師審計(jì)師高級(jí)會(huì)計(jì)師基金從業(yè)資格稅務(wù)師資產(chǎn)評(píng)估師國際內(nèi)審師ACCA/CAT價(jià)格鑒證師統(tǒng)計(jì)資格從業(yè)
一級(jí)建造師二級(jí)建造師消防工程師造價(jià)工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測(cè)工程師建筑八大員注冊(cè)建筑師二級(jí)造價(jià)師監(jiān)理工程師咨詢工程師房地產(chǎn)估價(jià)師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評(píng)價(jià)土地登記代理公路造價(jià)師公路監(jiān)理師化工工程師暖通工程師給排水工程師計(jì)量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會(huì)工作者司法考試職稱計(jì)算機(jī)營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級(jí)職稱護(hù)士資格證初級(jí)護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實(shí)踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗(yàn)技師臨床醫(yī)學(xué)理論中醫(yī)理論