Убедиться, что все исключения обработаны - PullRequest
0 голосов
/ 25 октября 2018

Исходя из этого вопроса , есть ли способ убедиться, что я обрабатываю все исключения, которые может выдать?Что-то вроде предупреждения об исчерпанности соответствия шаблону от компилятора, но для исключений.Я думаю, что это имеет смысл ...

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете перехватить все исключения с помощью SomeException, но обычно это плохая идея, потому что вы также заканчиваете тем, что ловите асинхронные исключения, которые выбрасываются в поток извне.

В Haskell часто используют асинхронные исключения для запуска отмены потоков из других потоков, сигнал об ошибках памяти и т.п.И очень редко вы хотите поймать асинхронное исключение;они в значительной степени не связаны с реальной логикой потока.Но вы все равно можете использовать такие функции, как bracket и finally, чтобы ресурсы, удерживаемые уничтоженным потоком, были правильно освобождены.

Существуют такие пакеты, как safe-exceptions и unliftio, которые помогают избежать перехвата асинхронных исключений по ошибке, и в то же время предоставляют функции типа catchAny, которые перехватывают другие типы исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...