gpt4 book ai didi

python - 尝试/排除某种类型的所有 Python 错误

转载 作者:行者123 更新时间:2023-12-03 08:18:08 25 4
gpt4 key购买 nike

在我的 Python 代码中,我使用 PyQt5 模块来显示 GUI。有时,如果我删除一个元素然后尝试在该元素的实例上使用一个函数,我会遇到运行时错误。此错误仅显示在控制台中,实际上并不会干扰 GUI 或终止它。
无论如何,我想删除它(运行时错误)。我的第一个想法是使用 try/except阻止代码,除了我正在谈论的运行时错误。这样做的问题是,如果我用 try/except block 封装我的整个代码,那么如果错误被捕获,它将跳到我的程序末尾并终止:

try:
# If any errors occur here...
<code>
except RuntimeError:
# The GUI will stop entirely, and the Python interpreter will skip to this line
pass
我的问题的另一个解决方案是用 try/catch 封装任何可能引发 RuntimeError 的实例。 block ,像这样:
try:
# If any errors occur here...
<code that may print an error>
except RuntimeError:
# Python wont display the error
pass
但是考虑到我需要在我的代码中执行此操作的大量时间,我想知道是否有更有效的方法来解决此问题。

最佳答案

根据我的评论,我肯定会在可能引发运行时错误的特定行调用中使用 catch。这可以避免您意外抑制另一个您没有预料到的错误。
根据可能产生运行时错误的调用,我更喜欢装饰器模式来隐藏 try-except 逻辑。就像是:

from functools import wraps


def catch_runtime_error(func):
@wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except RuntimeError:
pass # or whatever handle you fancy

return wrapper
然后你会像这样使用:
@catch_runtime_error
def the_function_that_raises(...):
# whatever the body is

the_function_that_raises(...)
或者,您可以在代码中更直接地使用它:
def the_function_that_raises(...):
# whatever the body is

catch_runtime_error(the_function_that_raises)(...)

关于python - 尝试/排除某种类型的所有 Python 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63337292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com