Я читаю об обработке исключений. Я получил некоторую информацию о том, что такое обработка исключений, но у меня есть несколько вопросов:
- Когда бросать исключение?
 - Вместо того, чтобы бросать исключение, можем ли мы использовать возвращаемое значение для указания ошибки?
 - Если я защищу все свои функции блоками try-catch, не уменьшит ли производительность?
 - Когда использовать обработку исключений?
 - Я увидел проект, в котором каждая функция в этом проекте содержала блок try-catch (т.е. код внутри всей функции окружен блоком try-catch). Это хорошая практика?
 - В чем разница между try-catch и __try __except?