我正在驗證實用程序方法中Restlet URL的某些輸入(這樣,如果我採取的行爲發生變化,我只能將其更改爲一個地方,yay)。 legalName本質上驗證該值爲alphaNumeric,但我可能會很快允許其他角色。哪個例外最適合在這裏?
我儘量讓我的例外有意義 - 在這種情況下什麼異常會是最好的?
public static String getProperty(Request request, String key) {
String value = request.getAttributes().get(key).toString();
// unless something is specifically text, it is a property
if(legalName(value)) return value;
throw new IllegalArgumentException(value);
}
我的想法是:
- 拋出:IllegalArgumentException - 的關鍵,直接導致了無效的結果
- IllegalStateException異常 - 我們正在嘗試使用不符合要求的值
- 也不例外 - 回報一個空字符串並記錄違規行爲發生的事實
- 沒有例外 - 刪除任何不需要的字符,返回消毒後的字符串並記錄事實
當然我不是第一人,要驗證:-)
通常情況下,它不會被存儲,它只是用作參數。它可能仍然會以查詢結束。我的想法是,如果我一進入系統就對其進行清理,我知道我會有安全的投入。 – corsiKa
看到我的更新btw – Bozho
哦,我很喜歡第一個子彈選項。這也更好,因爲使用驗證的其他任何事情都不必執行拋出,也就是說,如果它發生更改(如下所述並使用驗證框架),它就在我更改它的地方,而不是一打。至於存儲驗證,我明白你的意思。在它甚至到達我的代碼之前基本上攔截它。我肯定會研究這一點。謝謝! – corsiKa