try-exception的相关问题

class QueueError(IndexError):
pass

class Queue:
def init(self):
self.queue = []

def put(self, elem):
    self.queue.insert(0, elem)

def get(self):
    if len(self.queue) > 0:
        elem = self.queue[-1]
        del self.queue[-1]
        return elem
    else:
        raise QueueError

que = Queue()
que.put(1)
que.put("dog")
que.put(False)
try:
for i in range(4):
print(que.get())
except:
print("Queue error")

output:
1
dog
False
Queue error

在def get(self)函数里,我没有用if-else statement,
直接 elem = self.queue[-1]
del self.queue[-1]
return elem
然后class QueueError(IndexError): 我也没有写
pass

最后output也可以出来1
dog
False
Queue error

请问写class和if-else statement是不是多此一举

写class和if-else statement不是多此一举
if len(self.queue) > 0: 是判断栈是不是为空,为空时发出QueueError错误,明确表示触发了一个Queue的错误
你不写if len(self.queue) > 0: 判断栈,当self.queue栈为空时 self.queue[-1]会触发IndexError: list index out of range错误
虽然也可以用try except捕获但意义就不一样了

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632