Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当文件内容读取错误时要使用哪个异常_Python - Fatal编程技术网

Python 当文件内容读取错误时要使用哪个异常

Python 当文件内容读取错误时要使用哪个异常,python,Python,背景 我有一个简单的函数,它指向一个文件夹,查看所有json文件,然后特别是一个名为map\u file\u name的字段,确保每个json文件都有正确的值,如果没有,我会引发异常 def verify_all_file_name(local_download_dir: Path) -> None: expected_map_file_name = constants.PROD_MAP_FILE_NAME for json_file in list(

背景

我有一个简单的函数,它指向一个文件夹,查看所有json文件,然后特别是一个名为
map\u file\u name
的字段,确保每个json文件都有正确的值,如果没有,我会引发异常

   def verify_all_file_name(local_download_dir: Path) -> None:
        expected_map_file_name = constants.PROD_MAP_FILE_NAME
        for json_file in list(local_download_dir.rglob("*.json")):
            if json.loads(json_file.read_text())["map_file_name"] != expected_map_file_name:
                raise Exception(
                    f"Map name in the File: {json_file} has incorrect map file name"
                )
问题


我想提出一个更具体的例外,但我不确定应该使用哪一个?我在这里看了一遍,但不确定哪一个特例适用于我。任何帮助都将不胜感激。

这当然是一个意见问题,但是
ValueError
是一种内置的异常类型,在这里似乎可以工作。如果您不喜欢,只需介绍您自己的异常类型:

class IncorrectMapFileNameError(Exception):
    pass

我猜最接近的内置错误是
ValueError
,但是如果它太一般,那么创建一个继承自
Exception

的自己的by 2 liner类,我发现在我键入
RuntimeError
时,这个问题已经得到了回答,可能是一个更好的基类(因为查找取决于由
json.loads
生成的运行时值的结果)。如果函数更一般,为任意可映射的值编制索引而不是生成一个值本身,则还可以将
ValueError
子类化。如果我错了,请更正我的错误,但在操作或函数接收到错误值的参数时未使用
ValueError
。在这种情况下,我并没有真正得到错误值的参数他的情况是,但是遇到了一个错误的字段名。非常间接地,您可能会争辩说,提供给
verify\u all\u file\u name
的路径无效,因为它包含的文件不包含有效的映射文件名。但是您的评论确实促使我进一步在我提到的两种情况下使用
RuntimeError
的自定义子类在我的第一个评论中,我提到了d。