Python3-提升政治家

2024-05-16 19:12:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在学习由Mark Lutz和David Ascher编写的Python,我遇到了一段不断出现错误的代码。我知道这本书是用Python 2编写的,与我使用的Pyhton 3不同。我想知道是否有人知道我的问题的解决办法,因为我到处找,但我一直找不到解决办法。

。。。。。。。。。。。。。。。。。。。。。。。。。

MyBad = 'oops'

def stuff( ):
    raise MyBad

try:
    stuff( )
except MyBad:
    print('got it')

Tags: 代码pyhtondef错误raisedavidmarkoops
2条回答

如果不创建类(至少为空类),则无法引发自定义异常。

也可以使用一个初始化函数而不是pass来添加自定义文本:

class MyBad(Exception):
    pass
    # def __init__(self, txt):
    #     print(txt)

def stuff( ):
     raise MyBad('test')

try:
    stuff( )
except MyBad:
    print('got it')

如果您使用通行证,您将拥有:

got it

如果您在comment中使用了

test and got it

基本上,MyBad不是异常,并且raise语句只能与异常一起使用。

要使MyBad成为异常,必须使它扩展Exception的子类。例如,以下操作将起作用:

class MyBad(Exception):
    pass

def stuff( ):
    raise MyBad

try:
    stuff( )
except MyBad:
    print('got it')

输出:

got it

但是,最好是引发异常类的实例,而不是类本身,因为它允许使用参数,通常用于描述错误。以下示例说明了这一点:

class MyBad(Exception):
    def __init__(self, message):
        super().__init__()
        self.message = message

def stuff(message):
    raise MyBad(message)

try:
    stuff("Your bad")
except MyBad as error:
    print('got it (message: {})'.format(error.message))

输出:

got it (Your bad)

相关问题 更多 >