Исключение по сравнению с утверждает? [дубликат]

В принципе, да, Python их отличает, но в Python обычно рассматривать методы как подмножество функций. Методы связаны с классом или экземпляром, а «автономные функции» - нет. Что-то, что является методом, также является функцией, но могут быть функции, которые не являются методами.

Как отметил Джон Клементс в своем комментарии, это отличие не так уж и холодно, как на C ++. Автономные функции могут быть «преобразованы» в методы во время выполнения, а методы могут быть назначены переменным таким образом, чтобы они действовали не иначе, как автономные функции. Таким образом, граница между методами и функциями проницаема.

42
задан Community 23 May 2017 в 11:54
поделиться

6 ответов

Мое эмпирическое правило:

Исключения используются для условий ошибки времени выполнения (ошибки IO, из памяти, не может получить соединение с базой данных, и т.д.).

Утверждения используются для кодирования ошибок (этот метод не принимает, аннулирует, и разработчик передал тот так или иначе).

библиотеки For с общедоступными классами, выдайте исключения на открытых методах (потому что имеет смысл делать так). Утверждения используются для ловли ошибок, не их.

РЕДАКТИРОВАНИЕ: Это не может быть совершенно ясно, из-за примера нулевого значения. Моя точка - то, что Вы используете утверждения (как другие указали) для условий, которых никогда не должно происходить для условий, которые никогда не должны превращать его в производственный код. Эти условия абсолютно должны перестать работать во время тестирования QA или поблочного тестирования.

40
ответ дан Mike Hofer 26 November 2019 в 23:50
поделиться

Утверждайте материал, который Вы знаете , не может произойти (т.е. если это происходит, это - Ваш отказ для того, чтобы быть некомпетентным).

Повышение исключительные ситуации, которые не рассматривает регулярный поток управления программы.

20
ответ дан 26 November 2019 в 23:50
поделиться

Вы используете исключения для исключительный ситуации. Например, из ситуации с памятью или отказа сети.

Вы используете, утверждают к , устанавливают , что встречено cetain предварительное условие. Например, указатель не является ПУСТЫМ, или целое число в определенном диапазоне.

2
ответ дан Jason Baker 26 November 2019 в 23:50
поделиться

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

я использую исключения для всего остального.

В повторно используемом коде, я предпочитаю исключение, потому что он дает вызывающей стороне выбор обработки или не решения проблемы. Просто попытайтесь ловить и обработать утверждение!

2
ответ дан Paul Beckingham 26 November 2019 в 23:50
поделиться

Утверждайте средство проверить, что программа находится в возможном состоянии. Если функция возвращается-1, когда она должна только возвратить положительные целые числа, и у Вас есть утверждение, которое проверяет, что, Ваша программа должна остановиться, потому что она помещает Вашу программу в опасном состоянии.

2
ответ дан Jason Evans 26 November 2019 в 23:50
поделиться

Как правило я выдаю исключения от:

  1. государственные функции пакета для ловли программных ошибок.
  2. внутренние функции для создания отчетов о системных ошибках или ошибках подсистемы передачи.

то, где я использую, утверждает только внутренне для ловли ошибок реализации.

1
ответ дан donpark 26 November 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: