python 基础系列(六) — Python的异常及其处理

python基础系列索引
python 基础系列(一) — Python介绍
python 基础系列(二) — Python基本语法
python 基础系列(三) — Python中的变量进阶
python 基础系列(四) — Python中的面向对象
python 基础系列(五) — Python中的继承
python 基础系列(六) — Python的异常及其处理
python 基础系列(七) — Python中的模块
python 基础系列(八) — Python中的文件操作
python 基础系列(九) — Python中的vi – 终端中的编辑器
python 基础系列(十) — Windows CMD命令大全
python 基础系列(十一) — 使用PyCharm远程调试树莓派python代码 — Windows CMD命令大全
如果你对python感兴趣,不妨看一下我的其他文章
学习目标
- 异常的概念
- 捕获异常
- 异常的传递
- 自定义异常
异常的捕获
基本语法
try:
可能会抛出异常的代码块
except:
捕获到异常后的处理代码
finally:
程序不论抛出异常还是没有抛出异常后要执行的代码,一般用于文件资源释放,内存回收等操作
错误类型捕获异常
基础语法
try:
需要捕获异常的代码
except 异常1:
捕获异常1,需要做的处理
except (错误2,异常3...):
捕获异常2、3,需要做的处理
finally:
程序最终需要执行的代码
通过日志查看错误的类型

代码示例
try:
num = int(input("请输入一个整数,求结果"))
print(100 / num)
except ZeroDivisionError:
print("除0错误")
except ValueError:
print("请输入一个正确的整数")
finally:
print("欢迎下次使用")
运行结果
请输入一个整数,求结果 a
请输入一个正确的整数
欢迎下次使用
捕获未知错误
基础语法
try:
需要捕获异常的代码
except (错误1,异常2...):
捕获异常1、2,需要做的处理
except Exception as result:
捕获到未捕获的异常,可以 print("捕获到异常 %s" % result)
finally:
程序最终需要执行的代码
代码示例
try:
num = int(input("请输入一个整数,求结果"))
print(100 / num)
except ValueError:
print("请输入一个正确的整数")
except Exception as result:
print("捕获到异常 %s" % result)
finally:
print("欢迎下次使用")
运行结果
请输入一个整数,求结果0
捕获到异常 division by zero
欢迎下次使用
异常捕获完整代码
基础语法
try:
需要捕获异常的代码
except 异常1:
捕获异常1,需要做的处理
except (错误2,异常3...):
捕获异常2、3,需要做的处理
except Exception as result:
捕获到未捕获的异常,可以 print("捕获到异常 %s" % result)
else:
没有捕获到异常会执行的代码
finally:
程序最终需要执行的代码
异常的传递
- 异常的传递 – 当代码或者函数传递出现错误抛出异常,会将异常传递给函数的调用方,一直传递到主程序
- 如果主程序任没有对异常处理,程序将会报错并终止
提示
- 在开发中,异常的捕获可以放在主程序中,不需要每一个函数逐一的编写
代码示例
def demo1():
print(10 / 0)
def demo2():
demo1()
try:
demo2()
except Exception as result:
print("捕获到异常 %s" % result)
运行结果
捕获到异常 division by zero
手动抛出 raise 异常
- 用户可以根据业务需要主动抛出异常,一般用在检测业务输入逻辑的工具类中
应用场景
def check_psd(psd):
if len(psd) < 6:
raise Exception("密码长度须大于6位")
if len(psd) > 12:
raise Exception("密码长度需小于12位")
def input_moudle():
return input("请输入设置的密码")
while True:
try:
psd = input_moudle()
check_psd(psd)
print("密码输入正确")
except Exception as result:
print("%s" % result)
运行结果
请输入设置的密码1
密码长度须大于6位
请输入设置的密码1
密码长度须大于6位
请输入设置的密码