Хоча здається логічним сказати, що програми повинні виловлювати лише винятки, з якими вони вміють поводитися, і не можуть знати, як поводитися з винятками, яких програміст не передбачав, така заява ігнорує той факт, що багато операцій можуть вийти з ладу майже необмежена кількість способів, які не мають побічних ефектів, і що у багатьох випадках правильне поводження для переважної більшості таких збоїв буде ідентичним; точні деталі відмови будуть неактуальними, і, отже, не має значення, чи передбачив їх програміст.
Якщо, наприклад, мета функції полягає в тому, щоб прочитати файл документа у відповідному об'єкті або створити нове вікно документа, щоб показати цей об’єкт, або повідомити користувачеві, що файл неможливо прочитати, спроба завантажити файл недійсний файл документа не повинен збивати програму - натомість він повинен показувати повідомлення, що вказує на проблему, але нехай решта програми продовжує працювати нормально, якщо з якоїсь причини спроба завантаження документа не пошкодила стан чогось іншого в системі .
Принципово, правильне поводження з винятком часто менше залежатиме від типу винятку, ніж місця, де воно було кинуто; якщо ресурс охороняється блокуванням читання-запису, і виняток закидається в метод, який придбав блокування для читання, належним поведінкою, як правило, є звільнення блокування, оскільки метод не міг нічого зробити з ресурсом . Якщо викид викидається під час придбання блокування для запису, замок часто повинен бути визнаний недійсним, оскільки захищений ресурс може перебувати в недійсному стані; якщо примітив блокування не має "недійсного" стану, слід додати прапор для відстеження такої недійсності. Звільнення блокування без його відключення погано, оскільки інший код може бачити об'єкт, що охороняється, у недійсному стані. Однак залишення замку звисає, чи не так та правильне рішення також. Правильним рішенням є визнання недійсним блокування таким чином, що будь-які очікувані чи майбутні спроби придбання негайно завершаться невдачею.
Якщо виявиться, що недійсний ресурс залишається перед будь-якою спробою його використання, немає жодної причини, щоб він збивав програму. Якщо недійсний ресурс має вирішальне значення для подальшої роботи додатка, його потрібно буде знищити, але вимкнення цього ресурсу, ймовірно, призведе до цього. Код, який отримав оригінальний виняток, часто не зможе дізнатися, яка ситуація застосовується, але якщо він визнає недійсним ресурс, він може гарантувати, що в будь-якому випадку будуть вжиті правильні дії.