在Python/django中读取json时可能出现多少种异常?

Tom*_*Tom 5 python django json exception

我有:

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
Run Code Online (Sandbox Code Playgroud)

我想捕获所有可能的错误。和

  • IOError- 当文件不存在或有语法错误(无效的 JSON)时,我会捕获错误。

  • RuntimeError- 无法测试它,但我认为在出现意外错误的情况下从文档中这是有意义的

  • ValueError- 我从这里出发,以防万一没有返回

  • PermissionDenied- 是一个特定的 Django 错误

还有其他有意义的例外吗?我不确定OSError这里是否有意义。我认为这个问题会更早提出,对吗?

Sha*_*ang 5

捕获异常的目的是在发生不良情况时以预期的方式控制程序的行为。如果您甚至不确定什么会导致异常发生,捕获它只会吞掉您可能存在的底层编程错误。

我不会向单个代码块添加尽可能多的异常,您应该只添加您关心的内容。更极端的是,每行代码都会产生某些异常,但由于显而易见的原因,您无法try except对所有异常都执行此操作。

编辑:

为了正确起见,既然您I don't want my code to break在任何情况下都提到过,您可以简单地执行以下操作:

try:
    # json.load
except Exception as e:
    print "Let's just ignore all exceptions, like this one: %s" % str(e)
Run Code Online (Sandbox Code Playgroud)

这将告诉你发生什么异常作为输出。