在 Python 中,异常处理是通过 try
、except
、else
和 finally
语句来实现的。这些语句可以帮助你捕获和处理程序运行时发生的错误,以提高程序的稳定性和用户体验。
一:基础结构
try:
# 可能会引发异常的代码
except :
print("异常")
else:
#没有异常就执行代码
finally:
#有没有异常都会执行的代码
一个简单的异常处理实现:
程序1
程序1
input_str = input('输入数字')
try:
input_int = int(input_str)
print(f'你输入了{input_int,input_int2}')
except:
print(f'异常',e)
else:
print(f'没有异常')
finally:
print(f'有无异常我都会执行')
print(f'函数正常结束')
输入一个数字,若它为数字则会输出输入的数字,若为不能转换的数据类型,就会返回异常
二:异常的类型
异常也分为好多类型:
except Exception as e: 未知异常,只要不满足以下异常,就满足这条异常
except TypeError as e: 类型转换异常
except ValueError as e: 值转换异常
except ZeroDivisionError as e: 为0异常
except FileNotFoundError as e: 找不到文件异常
三,自定义异常类
1.实现方式
定义一个类,使其继承 Exception 类
class LTOne(Exception):
def __init__(self, msg):
super().__init__(msg)
2.如何使用
在1中,定义了一个类,继承了Exception 类,它就有了Exception 类的异常性质
程序2
程序2
while True:
input_str = input('输入正整数')
try:
input_value = int(input_str)
try:
if input_value < 1:
raise LTOne('输入数字小于1,请重新输入')
# 手动加入自定义的异常类 raise
except LTOne as e:
print(e)
else:
print('奇数' if input_value % 2 else '偶数')
except ValueError as e:
print(f'输入内容不能转为数字,请重新输入')
在程序1述程序中,我们如果输入的值为0或者为负数,它也会报错
我们自定义了一个异常类,它有异常处理的方法和属性
使用 raise 自定义异常类名 (在其中输入出现异常时的输出)
这样通过进一步的完善,程序2就实现了更加完善的功能