在10.9节中,你定义了一个适用于整形的堆栈类型。定义一个异常类EmptyStackException,使得在堆栈为空时,调用pop和peek函数将抛出EmptyStackException异常。写一个带有try-catch语句的测试程序来处理这样的异常。
时间: 2024-03-14 13:44:14 浏览: 83
好的,我知道你的要求了。下面是实现EmptyStackException异常类的代码:
```python
class EmptyStackException(Exception):
def __init__(self, message="Stack is empty!"):
self.message = message
super().__init__(self.message)
```
在这个类中,我们继承了Python内置的Exception类,并重写了它的构造函数以提供自定义的错误消息。当堆栈为空时,我们将抛出这个异常。
接下来,我们来实现一个带有try-catch语句的测试程序来处理这样的异常:
```python
stack = []
def push(item):
stack.append(item)
def pop():
if not stack:
raise EmptyStackException()
return stack.pop()
def peek():
if not stack:
raise EmptyStackException()
return stack[-1]
try:
pop()
except EmptyStackException as e:
print(e.message)
try:
peek()
except EmptyStackException as e:
print(e.message)
push(1)
push(2)
push(3)
try:
while True:
print(pop())
except EmptyStackException as e:
print(e.message)
```
在这个测试程序中,我们首先尝试调用pop和peek函数,但是由于堆栈为空,会抛出EmptyStackException异常,并打印出错误消息。接着,我们向堆栈中压入几个整数,并通过循环不断调用pop函数来弹出它们。由于这些整数已经被压入堆栈中,所以不会抛出EmptyStackException异常。
希望这个例子能够帮助你理解如何在Python中实现自定义异常类,并使用try-catch语句来处理异常。
阅读全文