【python】异常捕获和处理
思考
在我们编写python程序的过程中,测试运行时总会碰到各种各样的报错,一般,只要python程序出现报错,程序就会退出运行的状态,这在某些情况下非常不友好,那么我们如何实现遇到报错时不退出程序,而且还能对对应的异常做处理呢?
#如果没有test.txt这文件,程序就会报错退出,导致后续代码无法被执行到
print("start....")
fp=open("test.txt")
print("end...")
异常捕获
异常捕获的最重要的两个目的:
- 遇到异常不退出
- 对异常做特殊处理
# -*- coding: UTF-8 -*-
import json
#NameError
#print(a)
#keyError
# d1 = {"a":1}
# print(d1["b"])
#indexError
# lst=[1,2,3]
# print(lst[4])
#断言异常 代码逻辑 测试
# num1=int(input("please enter num1:"))
# num2=int(input("please enter num2:"))
# assert num1 > num2
def add(a,b):
return abs(a)+abs(b)
#单元测试用例
#在python有test库专门做测试逻辑,但是简单的测试可以用断言去做assert
assert add(-1,2) == 3
#异常捕获
try:
print("json begin...")
# int("ABC")
# 1/0
# d1=json.loads("abc")
print("json after...")
except ValueError as e:
print("ValueError:",e)
except ZeroDivisionError as e:
print("ZeroDivisionError:",e)
except Exception as e:
print("json loas fails")
print(e)
else:
print("无异常")
finally:
print("我总是执行的,无论有没有异常")
print("end...")
#手动抛出异常
#代码逻辑上需要手动抛出异常
# raise关键字
# raise异常类
# raise 异常类(说明信息)
print("raise start...")
raise RuntimeError("运行时异常")
print("raise end....")