如何在 Python 中处理错误并继续执行脚本?

2 投票
8 回答
10920 浏览
提问于 2025-04-15 14:51

假设我在Python中有这样的代码:

l = dict['link']
t = dict['title']        <<<<<<<<error here, there is no "title"
d = dict['description']
k = dict['keyword']

如果第二行出现错误,但我希望它继续运行这个脚本并给其他值赋值,我可以“忽略”这些错误吗?

补充说明:我知道怎么用简单的try和except来处理错误。但是,很多时候如果第二行出错,它就会跳到except那部分,然后不再继续执行后面的代码。

补充说明:我知道有一个“get”方法。不过,我想要一种通用的方法来处理这个问题……我并不总是会使用字典。

8 个回答

3

如果你想要一种处理异常(错误)并继续执行的方式(不过这可能不是个好主意),你可以使用一个包装函数,比如:

def consume_exception(func, args, exception):
    try:
        return func(*args)
    except exception:
        return None

或者类似这样的东西。

然后调用

l = consume_exception(dict.__getitem__, ['link'], KeyError)
t = consume_exception(dict.__getitem__, ['title'], KeyError)
...
8
t = dic.get('title')

这段代码不会产生错误。它的意思是:

try:
    t = dic['title']
except KeyError:
    t = None

而且请不要覆盖内置的名称,不要用 dict 作为变量名。用其他名字。

12

最简单的办法是使用 .get() 方法:

l = dict.get('link')
t = dict.get('title')
d = dict.get('description')
k = dict.get('keyword')

这样,t 这个变量就会包含 None(如果你想要一个空字符串,可以用 dict.get('title', '') 这种写法)。另外一个选择是捕获 KeyError 这个错误。

撰写回答