Bunun bir çalışma zamanı istisnası olduğundan endişeleniyorum, bu yüzden muhtemelen idareli kullanılmalıdır.
Standart kullanım durumu:
void setPercentage(int pct) {
if( pct < 0 || pct > 100) {
throw new IllegalArgumentException("bad percent");
}
}
Ancak bu, aşağıdaki tasarımı zorlayacak gibi görünüyor:
public void computeScore() throws MyPackageException {
try {
setPercentage(userInputPercent);
}
catch(IllegalArgumentException exc){
throw new MyPackageException(exc);
}
}
Kontrol edilen bir istisna haline getirmek için.
Tamam, ama bununla gidelim. Yanlış girdi verirseniz, çalışma zamanı hatası alırsınız. İlk olarak, bu aslında tek tip olarak uygulanması oldukça zor bir politika, çünkü tam tersi bir dönüşümü yapmanız gerekebilir:
public void scanEmail(String emailStr, InputStream mime) {
try {
EmailAddress parsedAddress = EmailUtil.parse(emailStr);
}
catch(ParseException exc){
throw new IllegalArgumentException("bad email", exc);
}
}
Daha da kötüsü - 0 <= pct && pct <= 100
müşteri kodunu kontrol etmenin statik olarak yapılması beklenebilirken, bu, bir e-posta adresi gibi daha gelişmiş veriler için geçerli değildir veya daha kötüsü, bir veritabanında kontrol edilmesi gereken bir şeydir, bu nedenle genel olarak müşteri kodu önceden olamaz doğrulayın.
Yani temelde söylemek istediğim, kullanımı için anlamlı ve tutarlı bir politika görmüyorum IllegalArgumentException
. Görünüşe göre kullanılmamalı ve kendi kontrol edilen istisnalarımıza bağlı kalmalıyız. Bunu atmak için iyi bir kullanım durumu nedir?