আমি উদ্বিগ্ন যে এটি রানটাইম ব্যতিক্রম তাই সম্ভবত এটি খুব কম ব্যবহার করা উচিত।
স্ট্যান্ডার্ড ব্যবহারের কেস:
void setPercentage(int pct) {
if( pct < 0 || pct > 100) {
throw new IllegalArgumentException("bad percent");
}
}
তবে মনে হয় এটি নিম্নলিখিত নকশাকে বাধ্য করবে:
public void computeScore() throws MyPackageException {
try {
setPercentage(userInputPercent);
}
catch(IllegalArgumentException exc){
throw new MyPackageException(exc);
}
}
এটিকে চেক করা ব্যতিক্রম হিসাবে ফিরে পেতে।
ঠিক আছে, তবে এর সাথে চলুন। আপনি যদি খারাপ ইনপুট দেন তবে আপনি রানটাইম ত্রুটি পাবেন। সুতরাং প্রথমত এটি একইরূপে বাস্তবায়ন করা মোটামুটি কঠিন নীতি, কারণ আপনাকে একেবারে বিপরীত রূপান্তর করতে হতে পারে:
public void scanEmail(String emailStr, InputStream mime) {
try {
EmailAddress parsedAddress = EmailUtil.parse(emailStr);
}
catch(ParseException exc){
throw new IllegalArgumentException("bad email", exc);
}
}
এবং আরও খারাপ - 0 <= pct && pct <= 100
ক্লায়েন্ট কোডটি পরীক্ষা করার সময় স্থিতিশীলভাবে প্রত্যাশা করা যেতে পারে, এটি আরও উন্নত ডেটার যেমন ইমেল ঠিকানা, বা আরও খারাপ কোনও ডেটাবেসের বিরুদ্ধে যাচাই করতে হয় না, তাই সাধারণ ক্লায়েন্ট কোডটি প্রাক- বৈধ করা।
সুতরাং মূলত আমি যা বলছি তা হ'ল আমি এর ব্যবহারের জন্য কোনও অর্থবহ ধারাবাহিক নীতি দেখতে পাচ্ছি না IllegalArgumentException
। দেখে মনে হচ্ছে এটি ব্যবহার করা উচিত নয় এবং আমাদের নিজস্ব চেক করা ব্যতিক্রমগুলি আটকে থাকা উচিত। এটি নিক্ষেপ করার জন্য ভাল ব্যবহারের ক্ষেত্রে কী?