А вот архитекторы операционных систем не пришли к единому мнению, что делать в этом случае.panic() -- это не только средство сообщения об ошибке кодирования. Это еще и средство сообщения о том, что операционная система НЕ ЗНАЕТ, что делать в произошедшем случае. А что делать в случае пропадания флэшки -- и правда, непонятно. Ну, к примеру: программа позвала open(), написала данные write()'ом, позвала close(). Все системные вызовы завершились успешно. Программа (и, как следствие, пользователь!) уверены, что ВСЕ НОРМАЛЬНО. Exit code 0. Но ФИЗИЧЕСКИ данные пока в buffer cache. И тут добрый пользователь выдернул флэшку.
Как объяснить пользователю поведение операционной системы, допустим, если в данном случае просто инвалидировать содержимое кэша буферов? Он же ВИДЕЛ, что ВСЕ НОРМАЛЬНО завершилось! Где, балин, данные?! Паника операционки в этом случае -- способ показать, что ан нет, не все нормально...