理解python类型:可选、可调用、可用于读取JSON文件时的错误处理

理解python类型:可选、可调用、可用于读取JSON文件时的错误处理,python,error-handling,Python,Error Handling,Microsoft python代码使用RichPath和dpu_utils加载json文件。我在执行以下代码时遇到问题。如果有错误,它只是返回None吗?我知道这是一个生成器,我可以调用next(tmp=test()) 否,此函数返回生成器对象。无论如何,Callable[[str,Exception],None]基本上只是一个函数,它接受两个位置参数,第一个是字符串,另一个是异常,并返回None。这被称为n任何抛出异常的行。调用该函数的结果不会返回,所以它只跳过该行好的,所以它只跳过该行。酷

Microsoft python代码使用RichPath和dpu_utils加载json文件。我在执行以下代码时遇到问题。如果有错误,它只是返回None吗?我知道这是一个生成器,我可以调用next(tmp=test())


否,此函数返回生成器对象。无论如何,
Callable[[str,Exception],None]
基本上只是一个函数,它接受两个位置参数,第一个是字符串,另一个是异常,并返回
None
。这被称为n任何抛出异常的
。调用该函数的结果不会返回,所以它只跳过该行好的,所以它只跳过该行。酷。谢天谢地,我应该说,“伊埃尔德不是吗?”
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()