如何在Python 3中引发OSError?

时间:2018-12-03 17:33:01

标签: python python-3.x exception-handling

所有内置异常似乎都接受任意数量的具有任何类型的值的参数,没有关键字参数,并且没有隐式设置任何属性。甚至FileNotFoundError().errno的评估结果为None,而strerror属性也不是吸气剂,这使我得出结论,创建符合标准的OSError的唯一方法是构建它“从头开始”,就像这样:

new_error = FileNotFoundError()
new_error.errno = 2  # Be careful to match chosen subclass
new_error.strerror = os.strerror(2)  # Even this could be anything else
new_error.filename = "somefile.txt"
raise new_error

这当然可以,但是非常是非Python的,容易出错。我错过了什么吗?

关于意图的注释:我知道我不应该从自定义代码引发OSError。我只是设计一个尽可能类似于OSError及其子类的接口的类链,所以我想知道它是如何工作的。

0 个答案:

没有答案