Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python2.7中引发自己的异常?_Python_Python 2.x - Fatal编程技术网

如何在Python2.7中引发自己的异常?

如何在Python2.7中引发自己的异常?,python,python-2.x,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

我从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
选择一个数字:17
回溯(最近一次呼叫最后一次):
文件“C:/Users/arman/Desktop/Scribble/Hello.py”,第153行,在
inputNumber()
文件“C:/Users/arman/Desktop/Scribble/Hello.py”,第151行,输入编号
提高'BadNumberError','17是一个坏数字'
TypeError:异常必须是旧式类或从BaseException派生的,而不是str

如果您已经定义了
badnumberror
类异常,您应该按照如下方式引发异常

如果你没有,那么

class BadNumberError(Exception):
    pass

下面是关于引发异常的信息

如果您已经定义了
badnumberror
类异常,您应该按照如下方式引发异常

如果你没有,那么

class BadNumberError(Exception):
    pass

下面是关于引发异常的信息,只需从
Exception
类继承,然后您就可以抛出自己的异常:

class BadNumberException(Exception):
    pass

raise BadNumberException('17 is a bad number')
raise ValueError('17 is a bad number')
输出:

Traceback (most recent call last):
  File "<module1>", line 4, in <module>
BadNumberException: 17 is a bad number
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
BadNumberException:17是一个错误的数字

只需从
异常
类继承,然后您就可以抛出自己的异常:

class BadNumberException(Exception):
    pass

raise BadNumberException('17 is a bad number')
raise ValueError('17 is a bad number')
输出:

Traceback (most recent call last):
  File "<module1>", line 4, in <module>
BadNumberException: 17 is a bad number
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
BadNumberException:17是一个错误的数字
如果要定义一个,必须执行以下操作:

class BadNumberError(Exception):
    pass
然后使用它:

def inputNumber ():
    x = input ('Pick a number: ')
    if x == 17:
        raise BadNumberError('17 is a bad number')
    return x
inputNumber()
raise BadNumberError('17 is a bad number')
如果要定义,必须执行以下操作:

class BadNumberError(Exception):
    pass
然后使用它:

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

您可以使用标准异常:

class BadNumberException(Exception):
    pass

raise BadNumberException('17 is a bad number')
raise ValueError('17 is a bad number')
或者您可以定义自己的:

class BadNumberError(Exception):
    pass
然后使用它:

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

您可以使用标准异常:

class BadNumberException(Exception):
    pass

raise BadNumberException('17 is a bad number')
raise ValueError('17 is a bad number')
或者您可以定义自己的:

class BadNumberError(Exception):
    pass
然后使用它:

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

那本教程已经过时了。您希望选择不同的教程。代码在不产生弃用警告的情况下运行的最后一个Python版本是Python2.2(2001年发布),而对它的支持则完全从2.6(2008年)中删除。如果一个教程使用的概念和语法远远落后于时代,那么它也会有其他问题。找一些比15年前更新的东西。另外,如果您刚刚开始使用Python,我建议您从Python 3开始,而不是2开始。Python2已经寿终正寝,2.7在2020年之前将只接受安全修复。Python3是所有精力都将用到的地方。我一直想学习更新的版本,但我这学期上的机器视觉课程要求在Python2.7上编程……那本教程已经过时了。您希望选择不同的教程。代码在不产生弃用警告的情况下运行的最后一个Python版本是Python2.2(2001年发布),而对它的支持则完全从2.6(2008年)中删除。如果一个教程使用的概念和语法远远落后于时代,那么它也会有其他问题。找一些比15年前更新的东西。另外,如果您刚刚开始使用Python,我建议您从Python 3开始,而不是2开始。Python2已经寿终正寝,2.7在2020年之前将只接受安全修复。Python3是所有精力都将用到的地方。我一直想学习更新的版本,但我这学期上的机器视觉课程要求在Python2.7上编程……只要有这样一个例外类。没有。@MartijnPieters你完全正确,我已经更新了答案。谢谢我强烈怀疑OP会发现其他问题。Python2.2和更早的版本现在已经是古老的历史了。只要有这样一个异常类。没有。@MartijnPieters你完全正确,我已经更新了答案。谢谢我强烈怀疑OP会发现其他问题。Python2.2及更高版本到现在已经是古老的历史了。。