异常捕获:捕获程序有可能发生的异常,使我们可以处理这些错误,而不是程序由于出现异常而导致直接退出。
异常捕获一般有四大步:
try: 后面跟的是有可能发生异常的代码部分
except: 针对捕获到的异常做针对处理
else: 如果没有异常执行的代码
finally: 不管程序有没有异常,都会执行的语句
下面是一个例子:
- 不断请求用户输入一个正整数。
- 如果用户输入的是一个有效的整数且大于等于1,程序将判断并告知用户该数是奇数还是偶数。
- 如果用户输入的整数小于1,程序将抛出并捕获
LTone
异常,并打印相应的错误消息。 - 如果用户输入的不是一个整数,程序将捕获
ValueError
并提示用户重新输入。
class LTone(Exception):
def __init__(self, msg):
super().__init__(msg)
while True:
input_str = input("请输入一个正整数")
try:
input_value = int(input_str)
try:
if input_value < 1:
raise LTone("数字小于要求")
except LTone as e:
print(e)
else:
print("奇数" if input_value % 2 else "偶数")
except ValueError as e: #值异常
print("输入的结果无法转为数字,请重新输入", e)
还有一些常见的异常:
TypeError | 类型异常 |
ZeroDivisionError | 当尝试一个数除以0时,就会触发该异常 |
ValueError | 值异常 |
FileNotFoundError | 当文件不存在时会触发的异常 |