第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何避免使用多個(gè) throw 語句并僅使用一個(gè)帶有所需錯(cuò)誤消息的通用 throw 語句

如何避免使用多個(gè) throw 語句并僅使用一個(gè)帶有所需錯(cuò)誤消息的通用 throw 語句

UYOU 2022-10-20 17:23:19
我有一個(gè)驗(yàn)證輸入字符串的代碼,如果輸入字符串不匹配所需的格式,我需要拋出 IllegalArgumentException,有多個(gè)字段,每個(gè)字段都有一組不同的驗(yàn)證條件,所以對于每個(gè)字段,我目前正在執(zhí)行“如果”檢查如果不滿意我拋出 IllegalArgumentException 并且對應(yīng)字段有多個(gè) if 條件,并且每個(gè) IllegalArgumentException 都有不同的消息要打印關(guān)于字段。我正在尋找更通用的方法/重構(gòu),我可以只拋出一次 IllegalArgumentException 并為無效條件提供所需的錯(cuò)誤消息。我可以想到一種情況,我可以創(chuàng)建變量 say errorMeaage 并在其中存儲(chǔ)錯(cuò)誤消息,最后,如果變量 errorMeaage 不為空,我可以拋出 IllegalArgumentException 和所需的消息,但這并不能說服我。當(dāng)前代碼:package Miscellanious;public class ValidationMain {    public static void main(String args[]) {        ValidationMain obj = new ValidationMain();        obj.validate("Sam", "Rock", "Turner");    }    public void validate(String firstName, String middleName, String lastName) {        if (firstName != null && !firstName.matches("^[a-zA-Z`’ -]{1,50}$")) {            throw new IllegalArgumentException("Invalid value for firstName field from Input Parameter");        }        if (middleName != null && !middleName.matches("^[a-zA-Z.`’ -]{0,50}$")) {            throw new IllegalArgumentException("Invalid value for middleName field from Input Parameter");        }        if (lastName != null && !lastName.matches("^[a-zA-Z`’ -]{2,50}$")) {            throw new IllegalArgumentException("Invalid value for lastName field from Input Parameter");        }        System.out.println(firstName + " " + middleName + " " + lastName);    }}我可以想像下面這樣的東西,但它似乎會(huì)覆蓋以前的錯(cuò)誤并且沒有多大說服力
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

您可以做的一件事是將if檢查提取到一個(gè)單獨(dú)的方法中,您可以使用輸入、正則表達(dá)式和消息調(diào)用該方法:


private void validateInput(String input, String regex, String message) {

    if (input != null && !input.matches(regex)) {

        throw new IllegalArgumentException("Error Message :" + message);

    }

}


public void validate(String firstName, String middleName, String lastName) {

    this.validateInput(firstName, "^[a-zA-Z`’ -]{1,50}$", 

                       "Invalid value for firstName field from Input Parameter");

    this.validateInput(middleName, "^[a-zA-Z.`’ -]{0,50}$", 

                       "Invalid value for middleName field from Input Parameter");

    this.validateInput(lastName, "^[a-zA-Z`’ -]{2,50}$", 

                       "Invalid value for lastName field from Input Parameter");

}


查看完整回答
反對 回復(fù) 2022-10-20
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

為什么不使用else if來防止消息被覆蓋?這樣代碼將在第一個(gè)匹配的條件下退出。這是假設(shè)您想堅(jiān)持您的實(shí)現(xiàn)而不是過多地編輯代碼。


public void validate(String firstName, String middleName, String lastName) {


    String errorMessage = null ;


    if (firstName != null && !firstName.matches("^[a-zA-Z`’ -]{1,50}$")) {

        errorMessage = "Invalid value for firstName field from Input Parameter";

    }else if (middleName != null && !middleName.matches("^[a-zA-Z.`’ -]{0,50}$")) {

        errorMessage = "Invalid value for middleName field from Input Parameter";

    }else if (lastName != null && !lastName.matches("^[a-zA-Z`’ -]{2,50}$")) {

        errorMessage = "Invalid value for lastName field from Input Parameter";

    }


    if (errorMessage != null){


        throw new IllegalArgumentException("Error Message :" + errorMessage);

    }


    System.out.println(firstName + " " + middleName + " " + lastName);

}


查看完整回答
反對 回復(fù) 2022-10-20
?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

使用你的第二個(gè)想法......


public void validate(String firstName, String middleName, String lastName) {

        String errorMessage = "Invalid value for fields %s from Input Parameter";

        StringBuffer fields = new StringBuffer();


        if (firstName != null && !firstName.matches("^[a-zA-Z`’ -]{1,50}$")) {

            fields.append("firstName");

        }



        if (middleName != null && !middleName.matches("^[a-zA-Z.`’ -]{0,50}$")) {

            fields.append(" middleName");

        }


        if (lastName != null && !lastName.matches("^[a-zA-Z`’ -]{2,50}$")) {

            fields.append(" lastName");

        }


        if (fields.length() > 0){

            throw new IllegalArgumentException("Error Message :" + String.format(errorMessage, fields.toString()));

        }


        System.out.println(firstName + " " + middleName + " " + lastName);

    }

打電話給


validate("", "1", "");

輸出:


Exception in thread "main" java.lang.IllegalArgumentException: Error Message :Invalid value for fields firstName middleName lastName from Input Parameter

    at Main.validate(Main.java:26)

    at Main.main(Main.java:5)

exit status 1

打電話給


validate("Andres", "1", "Martinez");

輸出:


Exception in thread "main" java.lang.IllegalArgumentException: Error Message :Invalid value for fields  middleName from Input Parameter

    at Main.validate(Main.java:26)

    at Main.main(Main.java:5)

exit status 1


查看完整回答
反對 回復(fù) 2022-10-20
  • 3 回答
  • 0 關(guān)注
  • 142 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)