我从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
答案 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()