У меня есть вопрос, касающийся проверки ошибок в Python. Допустим, у меня есть функция, которая принимает путь к файлу в качестве ввода:
def myFunction(filepath):
infile = open(filepath)
#etc etc...
Одной из возможных предпосылок было бы существование файла.
Есть несколько возможных способов проверить это предварительное условие, и мне просто интересно, как лучше это сделать.
i) Проверить с помощью оператора if:
if not os.path.exists(filepath):
raise IOException('File does not exist: %s' % filepath)
Так я обычно и делаю, хотя Python выдает такое же исключение IOException, если файл не существует, даже если я его не поднимаю.
ii) Используйте assert для проверки предварительного условия:
assert os.path.exists(filepath), 'File does not exist: %s' % filepath
Использование утверждений представляется «стандартным» способом проверки предварительных / постусловий, поэтому я испытываю желание использовать их. Однако возможно, что эти утверждения отключены, когда во время выполнения используется флаг -o, что означает, что эта проверка потенциально может быть отключена, и это кажется рискованным.
iii) Не выполняйте предварительное условие вообще
Это потому, что если filepath не существует, то в любом случае будет сгенерировано исключение, и сообщение об исключении будет достаточно подробным, чтобы пользователь знал, что файл не существует
Мне просто интересно, что из вышеперечисленного является стандартной практикой, которую я должен использовать для своих кодов.