gpt4 book ai didi

python - python中的error异常处理

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:09 25 4
gpt4 key购买 nike

这是我的代码:

class personData ():
def __init__(self, age, spouse = None, children = 0):
self.age = age
self.children = children
self.spouse = spouse
if self.spouse == None:
del self.spouse
print "A %s year old person" % str(self.age)


def marries(self, name):
if self.spouse == None:
self.spouse = name
else:
try:
self.marries(name)
except Exception as detail:
print "spouse exists:", self.spouse

def divorces(self):
if self.spouse == None:
raise AttributeError, " Not married, divorce impossible"

我想做的是:

def divorces(self):
if self.spouse != None: ## thats mean the person has a spouse,
self.spouse = None ## I think that should remove the spouse, right?

如果我们再次调用离婚,这里应该会出现异常,因为配偶已被移除。

假设我的:

person = personData(30, 'Sue')

person.spouse 将是 Sue,如果我调用 person.marries('Anna') 会引发异常,现在如果我调用 person.divorce() 它将删除配偶 ('Sue')。我坚持的是当我调用 person.divorce() 时它应该引发异常说“没有配偶存在”而我无法做到这一点,我们将不胜感激。

最佳答案

您没有直接引发异常,如果引发异常是期望的结果,那么这是合适的。 (或者,您可以只打印一条消息而不处理任何异常。)您无需在此处使用 try - except。相反,只需提出异常,例如:

if self.spouse == None:
raise Exception( 'Divorce called but no spouse' )

此外,您永远不会到达当前的 try 部分,因为 hasattr(self, 'spouse') 始终为真。另一件事是,您的婚姻异常是由于 marries 的无限递归调用而发生的,而不是因为直接引发异常。您不应该从 marries 内部调用 marries

关于python - python中的error异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21802708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com