مهارتهایی فراتر از قواعد برنامهنویسی (قسمت دوم)
تعدادی از رویههای عملیاتی (practices) شناختهشده در مدیریت شرایط استثنا (exception) در ادامهی این مطلب توضیح داده شدهاند.
– یک exception را درون بلوک catch گم نکنید!
به مثال ساده زیر دقت کنید:
catch(NoSuchMethodException e) {
returnnull;}
در این مثال به جای مدیریتِ exception، مقدار تهی (null) بازگردانده شده است. علاوه بر این، علت بروز خطا نیز گم شده است؛ بدیهی است که بدون کشف علت بروز خطا نمیتوان از بروز آن پیشگیری کرد.
– یک exception را یا ثبت (log) کنید یا throw کنید، اما هر دو عمل را انجام ندهید.
به مثال ساده زیر دقت کنید:
catch(NoSuchMethodException e) {
LOGGER.error(“Some information”, e);
throwe;
}
در این مثال چند پیغام در فایلهای log ثبت خواهد شد و در نتیجه بررسی فایلهای log در مقایسه با حالتی که فقط یک log ثبت شده باشد، مشکلتر خواهد بود.
– هیچگاه یک exception را از بلوک throw،finally نکنید.
مثال زیر را در نظر بگیرید:
try{
someMethod(); //Throws exceptionOne
} finally{
cleanUp(); //If finally also threw any exception the exceptionOne will be lost forever
}
در این مثال اگر در متد cleanUp هیچ exception ای throw نشود، مشکلی ایجاد نمیشود، اما اگر متدهای someMethod و cleanUp هر دو exception ای را throw کنند، exception نوشتهشده در بلوک try از دست خواهد رفت! بنابراین بهتر است که در بلوک exception، finally مورد نظر را یا اداره (handle) کنید و یا آن را ثبت (log) کنید.
منبع:
[1] http://howtodoinjava.com