Я наведу вам перший приклад (але в самому кінці - це відповідь, чому суперечка).
Скажімо, ви редагуєте документ у редакторі документів на базі Java, і після завершення вибираєте Файл-> Зберегти як ... і ви вирішили зберегти документ у томі, на який у вас немає дозволу на запис. Редактор не навалиться на вас з некрасивою стеклом, він просто скаже вам, що він не може зберегти файл, і дозволить вам продовжувати редагування та / або збереження в інше місце.
У такому випадку, ймовірно, очікували перевіреного винятку, його спіймали та діяли, щоб милостиво відновитись із нього.
З іншого боку, замініть ці розділення на нуль або виняток з нульовим вказівником, викликане помилкою програмування, яка одержує свою потворну голову лише в певних умовах. Це може статися в будь-якому місці коду, оперативна пам’ять може бути пошкоджена і т. Д. Жоден API API не скаже вам, що "цей метод кине поділ на нуль, якщо оперативна пам'ять пошкоджена" .
Перевірені винятки повинні бути частиною дизайну, і користувачі цього API повинні готуватися з ними. Неперевірені винятки можуть траплятися майже скрізь і поза нашим контролем.
Суперечка виникає у програмістів, що використовують неперевірені винятки (що поширюються на RuntimeException), коли вони повинні використовувати перевірені винятки:
- як ярлик, щоб не турбувати компілятор
- щоб їх підписи виглядали простішими
- оскільки вони вважають, що перевірені винятки є проблемою залежності (якщо ви кинете новий перевірений виняток у клас реалізації, слід змінити підпис інтерфейсу) та viceversa.