如何制作一个合适的错误对象?

时间:2011-05-15 07:13:13

标签: python error-handling python-module

我正在制作一个小型Python模块。我想要这个模块返回错误,如果有的话。在Python中创建错误对象的正确或标准方法是什么?

编辑:我不确定如何创建自己的错误,当然因为我不确定错误是如何工作的(我只知道如何在try: ... except: ...中捕获它们)。 所以现在我做了草稿错误消息,错误是字符串。当出现意外情况时,我会打印和return None。我猜这不是正确的方法:)

示例:

    ...
    self.IsNotStringError = "Args was not a string."
    ...

def myMethod(self, args)
    """ Args must be a string. """
    if not isinstance(args, str):
       print IsNotStringError
       return None
    else:
        do things...

编辑(之二):在阅读下面的答案后,我进一步研究了Python文档。有a tutorial on how to make user-defined exceptions

文档中的示例:

class MyError(Exception):
    def __init__(self, value):
    self.value = value
    def __str__(self):
        return repr(self.value)

2 个答案:

答案 0 :(得分:5)

您可以通过继承Exception

来创建自己的例外类
class YourError( Exception ): pass

接下来只需在需要时抬起它:

raise YourError("error message")

答案 1 :(得分:2)

问题始终是:

  • 返回一些错误对象或
  • 提出异常

这完全取决于个人用例以及您要完成的任务。

显式异常通常是更好的选择。通过继承Exception来创建自己的异常可以完全控制。将任意值传递给您自己的异常的构造函数是直截了当的。在调用者端捕获异常并反省异常的存储数据也是微不足道的。

如果您期望的不仅仅是元答案,那么您必须更加具体。