将 try/except 的 except 部分分离到一个函数中
Separating except portion of a try/except into a function
我有一个 try/except,我在我的代码中经常重复除外部分。这让我相信,将 except 部分分离成一个函数会更好。
以下是我的用例:
try:
...
except api.error.ReadError as e:
...
except api.error.APIConnectionError as e:
...
except Exception as e:
...
我该如何将这个逻辑分离成一个函数,这样我就可以做一些简单的事情:
try:
...
except:
my_error_handling_function(e)
只需定义函数:
def my_error_handling(e):
#Do stuff
...并传入exception
对象作为参数:
try:
#some code
except Exception as e:
my_error_handling(e)
仅使用通用 Exception
类型将允许您拥有单个 except
子句并在您的处理函数中处理和测试不同的错误类型。
为了检查捕获的异常的名称,您可以通过以下方式获取:
type(e).__name__
里面会打印名字,比如ValueError
、IOError
等
定义函数:
def my_error_handling(e):
#Handle exception
并按照您的建议进行:
try:
...
except Exception as e:
my_error_handling_function(e)
您可以通过在函数中获取异常类型 'e' 来处理逻辑。参见:python: How do I know what type of exception occurred?
我建议重构您的代码,使 try/except 块仅出现在一个位置。
例如,带有 send()
方法的 API class 似乎是包含您在问题中描述的错误处理逻辑的合理候选者。
我有一个 try/except,我在我的代码中经常重复除外部分。这让我相信,将 except 部分分离成一个函数会更好。
以下是我的用例:
try:
...
except api.error.ReadError as e:
...
except api.error.APIConnectionError as e:
...
except Exception as e:
...
我该如何将这个逻辑分离成一个函数,这样我就可以做一些简单的事情:
try:
...
except:
my_error_handling_function(e)
只需定义函数:
def my_error_handling(e):
#Do stuff
...并传入exception
对象作为参数:
try:
#some code
except Exception as e:
my_error_handling(e)
仅使用通用 Exception
类型将允许您拥有单个 except
子句并在您的处理函数中处理和测试不同的错误类型。
为了检查捕获的异常的名称,您可以通过以下方式获取:
type(e).__name__
里面会打印名字,比如ValueError
、IOError
等
定义函数:
def my_error_handling(e):
#Handle exception
并按照您的建议进行:
try:
...
except Exception as e:
my_error_handling_function(e)
您可以通过在函数中获取异常类型 'e' 来处理逻辑。参见:python: How do I know what type of exception occurred?
我建议重构您的代码,使 try/except 块仅出现在一个位置。
例如,带有 send()
方法的 API class 似乎是包含您在问题中描述的错误处理逻辑的合理候选者。