我正在编写一个有点小的python程序,并且担心我在类方法和其他函数中处理异常的方式。
更准确地说,我试图考虑使用sys.exit
(aka raise SystemExit
)vs raise AppropriateError
的所有优缺点。
例如,让我们说,我有以下功能打印文本文件的内容:
def print_lines(path_to_file):
with open(path_to_file, 'r') as f:
for line in f.readlines():
print(line)
检查提供给函数的文件是否确实存在是合理的,所以一种方法是:
import sys
import os
def print_lines(path_to_file):
if os.path.isfile(path_to_file):
with open(path_to_file, 'r') as f:
for line in f.readlines():
print(line)
else:
sys.exit('Error: file not found')
另一种方式是raise FileNotFoundError
然后被拦截并在函数外的某处进行适当处理。乍一看,似乎使用sys.exit
可以省去编写额外代码行的麻烦(即try-except-else块),因此似乎是要走的路。所以我的问题是:
在这种情况下,你什么时候需要去sys.exit什么时候提出一个适当的异常/错误会更好?