MagicforestA 2022-06-18 22:34 采纳率: 100%
浏览 14
已结题

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是不是多此一举

  • 写回答

2条回答 默认 最新

  • 关注

    写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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月27日
  • 已采纳回答 6月19日
  • 创建了问题 6月18日

悬赏问题

  • ¥15 CATIA有些零件打开直接单机确定终止
  • ¥15 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址