异常处理
try...except语法
- 通过try关键字吧所有可能出现异常的代码包含在内,当程序出现异常时则进入except中,如果未出现异常,这不执行except中的内容
- else关键字表示若try中代码未出现异常时则进入else中继续运行else里面的代码块,为了将代码更好地进行串联
- finally指无论try中代码是否报错,最后都会执行finally代码块
- 异常处理是为了提高代码健壮性
py
while True:
try:
a = int(input("请输入一个数字:"))
if a == 1:
print("这是数字1")
elif a == 2:
print("这是数字2")
elif a == 3:
break
except:
print("不是数字")
else:
print("这是else部分")
finally:
print("这是finally部分")
Except类
- 如果程序中有指定明确的error对象,那么程序报错非指定error时就不会进入except,除非有指定异常的父类Exception
- 若不想处理某类异常时可使用raise关键字将异常继续抛出,raise还可以将自定义异常抛出
- 如果想看到异常的详细信息,可使用traceback.print_exc()来实现
- as关键字指给对象取别名,后续可直接调用别名
py
while True:
try:
a = int(input("请输入一个数字:"))
if a == 1:
print("这是数字1")
elif a == 2:
c = a / 0
elif a == 3:
li = [1, 2, 3]
print(li[10])
elif a == 100: # 将自定义异常抛出
raise
elif a == 4:
break
except ValueError as ve:
print("ValueError错误类型")
except ZeroDivisionError as zd:
raise
except IndexError as ie:
print("IndexError错误类型")
except Exception as e:
print("其他错误类型")
如果要添加异常的文字信息,可以调用__str__函数来实现文字的内容定义。
python
# 自定义异常类的基本使用
class MyException(Exception):
# 构造函数
def __init__(self):
# 这是构造函数
pass
# 定义异常的文字信息:要返回异常的信息内容,记得用return
def __str__(self):
return '这里是异常的文字信息'