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

2024-04-19 12:39:45 发布

您现在位置: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)

在问这个问题之前我搜索了很多,希望我的问题不是多余的。你知道吗

谢谢你!你知道吗


Tags: andpaththatmy错误somethisfile
1条回答
网友
1楼 · 发布于 2024-04-19 12:39:45

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

处理代码中不是错误的异常;有时处理异常比测试异常发生的可能性更有效。这叫做请求宽恕,而不是请求允许。你知道吗

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

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而引发的异常不应该被捕获;这种不正确的使用表明代码中的某个地方存在错误,作为开发人员,您真的想知道哪里出了问题,哪里出了问题。你知道吗

相关问题 更多 >