try_except基本结构
print("step0")
try:
print("step1")
a = 3/0
print("step2")
except:
print("发生异常,0不能做除数")
print("step0")
try:
print("step1")
a = 3/0
print("step2")
except BaseException as e:
print("step3")
print(e)
print(type(e))
print("end")
while True:
x = int(input("输入数字"))
if x==88:
print("退出程序")
break
结果
输入数字99
输入数字88
退出程序
while True:
try:
x = int(input("输入数字"))
print("输入的数字:", x)
if x==88:
print("退出程序")
break
except BaseException as e:
print(e)
print("异常,输入的不是一个数字")
print("循环数字输入程序结束!")
结果
输入数字99
输入的数字: 99
输入数字Celia
invalid literal for int() with base 10: 'Celia'
异常,输入的不是一个数字
输入数字
finally结构
无论是否发生异常都会被执行,用来释放try块中的申请的资源
1.
try:
a = input("请输入一个被除数")
b = input("请输入一个除数")
c = float(a)/float(b)
except BaseException as e:
print(e)
else:
print(c)
finally:
print("我是finally中的语句,无论发生异常与否,最后都执行")
print("程序结束!")
请输入一个被除数9
请输入一个除数0
float division by zero
我是finally中的语句,无论发生异常与否,最后都执行
程序结束!
try:
f = open("d:/a.txt", "r")
content = f.readline()
print(content)
except:
print("文件未找到")
finally:
print("run in finally.关闭资源")
try:
f.close()
except BaseException as e:
print(e)
print("程序执行结束")
文件未找到
run in finally.关闭资源
name 'f' is not defined
程序执行结束
常见异常的解决
SyntaxError:语法错误
NameError:尝试访问一个没有申明的变量
ZeroDicisionError:除数为0错误
ValueError:(数值错误)
TypeError:类型错误
eg:123+“abd”
TypeError:unsupported operand type(s) for + :'int’object has no attribute ‘sayhi’
Index Error:索引越界异常
KeyError:字典的关键字不存在
常见异常汇总
traceback模块
被用来跟踪异常返回信息
import traceback
try:
raise SyntaxError, "traceback test"
except:
traceback.print_exc()