Python 当文件内容读取错误时要使用哪个异常
背景 我有一个简单的函数,它指向一个文件夹,查看所有json文件,然后特别是一个名为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(
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。