Обробка некритичних помилок в Visual C # (Sharp)

Однією з найбільш дурних реакцій програм на позаштатні ситуації є припинення виконання, коли вони могли б спокійно продовжувати працювати Така поведінка викликано острахом розробників, що програма може накоїти щось серйозне навіть при незначній помилку

Припустимо, що для виконання програми потрібно конфігураційний файл Але якою має бути реакція програми, якщо він відсутній Одним підходом буде не міркувати багато, а попросту припинити виконання Цей підхід, звичайно, спрацює, але що, якщо проблема відсутнього конфігурацнного файлу викличе ланцюгову реакцію інших помилок Тоді замість однієї Ошиі доведеться розбиратися з багатьма Іншим підходом до вирішення проблеми

відсутності конфігураційного файлу може бути використання дії за умовчанням У даному прикладі такою дією може бути висновок діалогового вікна, в якому користувачеві пропонується вибрати необхідний конфігурацнний файл, або ж програма могла б сама створити такий файл з установками за замовчуванням Зразок коду для створення такого файлу показаний в наступному фрагменті коду:

try {

LoadConfiguration()

}

catch (ConfigurationException ex) { CreateDefaultConfiguration()

}

У даному коді метод LoadConf iguration () захищений операторами try / catch, але блок catch перехоплює ТІЛЬКИ виключення типу ConfigurationException (вбудоване виняток С #) Таким чином, якщо відбувається виняток типу ConfigurationException, то створюється конфігураційний файл за умовчанням, що дозволить програмі продовжити виконання Якщо в методі LoadConf iguration () відбудеться виняток іншого типу, то воно буде відфільтровано для обробки небудь обробником більш високого рівня

При обробці некритичних помилок важливо відфільтрувати для обробки коретное виняток і реалізувати для нього належним чином відтестовані обробник Не намагайтеся реалізувати обробник для виправлення всіх внештаих ситуацій, т к ви ніколи не зможете цього зробити, а тільки викличете допоітельние проблеми Щоб обробник міг виправити проблему, прийміть заходи до того, щоб у ньому самому не могло статися виняток Якщо таке статися, то воно буде передано для обробки зухвалому коду вищого рівня

У цьому розділі ми розглянули помилки і виключення З цього матеріалу рекомеуется запамятати такі аспекти

• У програмах завжди відбуваються помилки і виключення

• Код програм організований подібно управлінської ієрархії Ієрархія коду містить два типи коду: організаційний код і який реалізує код

• Винятки перехоплюються за допомогою блоків коду try і catch

• Блок коду finally виконується незалежно від того, чи було згенеровано ілюченіе Призначенням блоку finally є виконання скидання до первональному станом

• Відповідальність за викидання винятків лежить на реализующем, коді

Який реалізує код не намагається обробити або придушити виняток Це озна, що реалізує код містить блок finally для скидання стану в початкове, але зазвичай не містить блоку catch

П Організаційний код повинен мати на увазі можливість виникнення іскленій Це означає, що організаційний код реалізує блоки catch для первата і обробки виключень »Зазвичай цей код не містить блоку finally, але може фільтрувати винятку

• Винятки фільтруються, щоб визначити, які з них перехоплювати, а кі немає

• Код можна захистити від винятків за допомогою пісочниці

• Реалізуйте для вашого коду стан за замовчуванням, щоб зробити його удобітаемим і легко обслуговується

• Код, в якому обробляються некритичні помилки, зазвичай є оргізаціонним кодом і використовується для виправлення винятків

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*