Python 3.x 函数错误处理的有效方法
错误处理函数示例:Python 3.x 函数错误处理的有效方法,python-3.x,exception,error-handling,Python 3.x,Exception,Error Handling,错误处理函数示例: def read_file(): try: with open(filename, 'rb') as fd: x = fd.read() except FileNotFoundError as e: return(e) return(x) 我会这样调用函数: file = read_file("test.txt") if file: #do something 有没有比多次使用retu
def read_file():
try:
with open(filename, 'rb') as fd:
x = fd.read()
except FileNotFoundError as e:
return(e)
return(x)
我会这样调用函数:
file = read_file("test.txt")
if file:
#do something
有没有比多次使用return更有效的方法来处理错误?捕捉
e
然后返回它是非常奇怪的;为什么函数的用户希望返回错误而不是引发错误?返回错误不会处理它,它只是将处理错误的责任传递给调用方。让错误被引发是让调用者负责处理它的一种更自然的方式。因此,完全不捕捉错误是有道理的:
def read_文件(文件名):
打开(文件名为“rb”)作为fd时:
返回fd.read()
对于希望写入if file:
以测试文件是否存在的所需用例,您的read_file
函数可以捕获错误并返回None
,因此if
条件将为false:
def read_文件(文件名):
尝试:
打开(文件名为“rb”)作为fd时:
返回fd.read()
除FileNotFoundError外:
一无所获
但是,这意味着,如果调用方没有意识到函数可能返回None
,那么在预期文件数据的位置使用None
,而不是FileNotFoundError
,就会出现错误,并且很难识别代码中的问题
如果您确实希望使用可能不存在的文件名调用函数,那么将函数命名为
read\u file\u If\u exists
可能是一种更好的方式,可以清楚地表明使用不存在的文件名调用此函数不被视为错误。如果返回错误,主代码中会发生什么情况?请再次检查文件
是错误还是字符串,好吗?我会说raisee
而不是return
,然后还要处理函数调用。毕竟,如果出现错误,您不会希望继续。请提供一个示例作为答案,好吗?如果没有更多的代码上下文或目的,这有点困难,因为现在看起来我会放弃这个函数。try/except
块将独立完成此任务