如何在Python 2.7中引发自己的异常?

时间:2016-09-22 11:56:52

标签: python python-2.x

我从Python教程书中复制并粘贴了这些代码行。当我尝试在PyCharm中运行它时,为什么这段代码不起作用?

def inputNumber ():
    x = input ('Pick a number: ')
    if x == 17:
      raise 'BadNumberError', '17 is a bad number'
    return x
inputNumber()

这是我运行代码时得到的结果:

Pick a number: 17
Traceback (most recent call last):
  File "C:/Users/arman/Desktop/Scribble/Hello.py", line 153, in <module>
    inputNumber()
  File "C:/Users/arman/Desktop/Scribble/Hello.py", line 151, in inputNumber
    raise 'BadNumberError', '17 is a bad number'
TypeError: exceptions must be old-style classes or derived from BaseException, not str

4 个答案:

答案 0 :(得分:3)

您可以使用标准例外:

raise ValueError('17 is a bad number')

或者您可以定义自己的:

class BadNumberError(Exception):
    pass

然后使用它:

raise BadNumberError('17 is a bad number')

答案 1 :(得分:0)

如果你已经定义了BadNumberError('17 is a bad number')类异常,你应该按照以下BadNumberError提出异常。

如果你没有,那么

class BadNumberError(Exception):
    pass

以下是docs,其中包含有关提出例外的信息

答案 2 :(得分:0)

只需从Exception类继承,然后就可以抛出自己的例外:

class BadNumberException(Exception):
    pass

raise BadNumberException('17 is a bad number')

输出:

Traceback (most recent call last):
  File "<module1>", line 4, in <module>
BadNumberException: 17 is a bad number

答案 3 :(得分:0)

如果要定义your own error,则必须执行以下操作:

class BadNumberError(Exception):
    pass

然后使用它:

def inputNumber ():
    x = input ('Pick a number: ')
    if x == 17:
        raise BadNumberError('17 is a bad number')
    return x
inputNumber()