在Python中支持/反对`raise Exception(message)`的参数

时间:2012-09-26 07:20:42

标签: python coding-style

我正在使用一个框架,源代码使用Exception类(而不是子类,特定于框架或来自stdlib)在几个地方引发异常,这是不好的我认为这个想法。

反对这个习语的主要论点是它强制调用者使用except Exception:,它可以捕获超出其意义的内容,因此可以在较低的堆栈级别隐藏问题。

然而,在Python文档中的快速搜索没有提出反对这种做法的论据,并且在教程中甚至有这样的例子(尽管在Python中脚本可能完全没有问题)在我看来的框架)。

raise Exception被认为是pythonic吗?

2 个答案:

答案 0 :(得分:7)

来自PEP 8

  

模块或包应该定义自己的特定于域的基类异常类,它应该是内置的Exception类的子类。

答案 1 :(得分:1)

不,不是。框架应该至少提供自己的异常类,并且可能应该有几个(取决于可能出错的各种事物)。

正如你所说,except Exception会抓住太多而且不是很好的做法。