【发布时间】:2016-05-21 04:09:53
【问题描述】:
我有:
MY_PATH_DIR = 'path/to/my/json/file.json'
try:
with open(MY_PATH_DIR, 'r') as f:
MY_PATH_DIR = json.load(f)
except IOError, RuntimeError, ValueError:
pass
except PermissionDenied:
pass
我想捕捉所有可能的错误。与
IOError- 当文件不存在或有 语法错误(无效的 JSON)。RuntimeError- 无法测试,但我认为从 发生意外错误时的文档ValueError- 我从here 收到以防万一没有返回PermissionDenied- 是特定的 Django 错误
还有其他有意义的例外吗?我不确定OSError 在这里是否有意义。我认为这会更早提出,对吧?
【问题讨论】:
-
我认为您不会看到 PermissionDenied 错误,因为此代码没有执行任何特定于 django 的操作。并且运行时错误应该只在非常特定的情况下被捕获,当你知道你可以修复程序的状态时。您可以编写一个单元测试来检查各种输入是否存在异常:文件不存在,文件为空,文件包含无效的 json,文件包含非 ascii 字符。此外,您可能不想用 json 加载的结果覆盖您的常量路径。
-
这是一个叫做“pokemon异常处理”的坏习惯。只捕获你打算处理的异常!
-
好的,那我只用
IOError一个,@BrianSchlenker我测试了你提到的所有案例,他们都被IOError抓住了,谢谢。并且代码在 django 应用程序中,因此PermissionDenied
标签: python json django exception