Python风格:捕捉异常只是为了打印它们



我对Python中的错误处理没有经验,并且想知道,就风格而言,如果您不在代码中显式处理它,那么捕获和打印错误是否值得?

例如:

my_func(path):
    try:
        some_func_that_opens_file(path) # this would raise and IOError by itself
    except IOerror as ex:
        print ex  # or alternatively print 'your file doesn't exist'

或者try/except的目的是捕获错误并继续做其他事情,尽管有错误(否则程序会失败)?例如:

my_func(path):
    try:
        some_func_that_opens_file(path) # this would raise and IOError by itself
    except IOerror:
        fixed = fix_path(path) # makes the path what it needs to be
        some_func_that_opens_file(fixed)

我在问这个问题之前搜索了很多,所以希望我的问题不是多余的。

谢谢!

处理异常以使代码继续;另一种方法是让默认处理程序(就在解释器退出之前)打印一个回溯。

处理代码中不是错误的异常;有时处理异常比测试异常发生的可能性更有效。这叫做请求原谅请求允许相对。

以收集字典中的列表信息为例。您可以使用:

if key not in dictionary:
    dictionary[key] = ['default', 'initial', 'value']
listval = dictionary[key]
listval.extend(['other', 'values'])

这是请求许可,而:

try:
    listval = dictionary[key]
except KeyError:
    listval = dictionary[key] = ['default', 'initial', 'value']
listval.extend(['other', 'values'])

会请求原谅。这显式地使用异常处理;如果缺少密钥的情况是异常(不常见),请求原谅比请求允许快。

如果错误发生在最终用户身上,并且可以预料到,那么您还需要处理异常,因为您的程序停止时出现了一个丑陋的回溯,这对用户来说是不友好的。

但是由于错误使用API而引发的异常不应该被捕获;这种不正确的使用指示了代码中的某个地方存在错误,作为开发人员,您非常想知道哪里出了问题,以及在哪里。

相关内容

  • 没有找到相关文章

最新更新