#python #error-handling
#python #обработка ошибок
Вопрос:
Код Microsoft python с использованием RichPath и dpu_utils для загрузки файлов json. У меня возникли проблемы с тем, что делает следующий код. Он просто возвращает None, если есть ошибка? Я понимаю, что это генератор, и я могу вызвать next(tmp= test()).
from typing import Any, List, Optional, Iterable, Callable
from collections import OrderedDict
def test( error_handling: Optional[Callable[[str, Exception], None]]=None) -> Iterable[Any]:
fh = open('ppi/train_graph.json', 'rt', encoding='utf-8')
try:
for line in fh:
try:
yield json.loads(line, object_pairs_hook=OrderedDict)
except Exception as e:
if error_handling is None:
raise
else:
error_handling(line, e)
finally:
fh.close()
gen = test()
Комментарии:
1. Нет, эта функция возвращает объект генератора. Он никогда не возвращает None.
2. В любом случае,
Callable[[str, Exception], None]
это в основном просто функция, которая принимает два позиционных аргумента, первый — строку, другой — исключение, и возвращаетNone
. Это называется n anyline
, который генерирует исключение. Результат вызова этой функции не возвращается, поэтому она просто пропускает эту строку3. хорошо, поэтому он просто пропускает строку. прохладный. Спасибо
4. Я должен был сказать: «не дает»