使用sys.exit处理python中的特殊情况vs raise SomeError

时间:2017-02-01 12:57:18

标签: python exception error-handling exception-handling

我正在编写一个有点小的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什么时候提出一个适当的异常/错误会更好?

0 个答案:

没有答案