异常异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。 一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。当Python脚本发生异常时,我们需要捕获处理它,否则程序会终止执行。
异常的处理捕获异常可以使用 try/except 语句。 该语法用来检测try 语句块中的错误,从而让except 语句捕获异常信息并处理。 try: 正常的操作<运行的>
.................. except <异常类> as <变量>: 发生异常,执行这块代码 ........................... else: 如果没有异常发生
finally: <语句>不管如何,最后一定要执行的代码。
try:
print("开始计算")
a = 2
b = 0
result = a/b
print("计算结果为:{0}".format(result))
except Exception as e:
print("除数不能为0")
else:
print("无异常出现")
finally:
print("done")输出结果: 
根据输出结果,先执行try语句,遇到异常则停止执行下面的语句 print("计算结果为:{0}".format(result)) #停止执行跳转至错误处理代码,也就是 except 语句块;执行完except后执行finally语句块;不执行else语句块。 try:
print("开始计算")
a = 2
b = 1
result = a/b
print("计算结果为:{0}".format(result))
except Exception as e:
print("除数不能为0")
else:
print("无异常出现")
finally:
print("done")输出结果: 可以看出,无异常出现时,先后执行 try 、else 和finally 语句块,没有执行except 语句块。 try:
print("开始计算")
a = 2
b = 0
result = a/b
print("计算结果为:{0}".format(result))
except Exception as e:
print("除数不能为0")
raise e #捕获异常
else:
print("无异常出现")
finally:
print("done")输出结果:从输出结果看出,错误类型为 ZeroDivisionError。
在常见的前后端分离开发环境中,对于异常信息通常都是按照约定格式,返回json字符串,从而将异常信息记录下来。 下面是一个示例
import json
def test():
result = dict()
try:
print(2/0)
except Exception as e:
result["msg"] = "Division can not be 0"
result["code"] = 403
result["data"] = [{"a": 1}, {"b": 2}]
finally:
return json.dumps(result) #字典转换为json串
if __name__ == '__main__':
print(test())输出结果: {"msg": "Division can not be 0", "code": 403, "data": [{"a": 1}, {"b": 2}]} 自定义模块调用例子:先写一个model,在调用: import json
def test():
result = dict()
try:
print(2/0)
except Exception as e: #Exception 异常类 ,e 是一个变量
result["msg"] = ""
result["code"] = 403
result["data"] = [{"a": 1}, {"b": 2}]
print("发生异常,除数不能为0")
raise e # 不注释时,可以抛出异常
finally:
return json.dumps(result)
if __name__ == '__main__':
print(test())事先做好的model,输出结果: 
现在import导入: from 第10课.demon1 import test
if __name__ == '__main__':
result = test()
print(result)输出结果,结果是一样的。 
|