异常
1、概念:程序在运行时,如果 Python 解释器遇到到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常。
2、异常捕获语法:
try:
可能出错的代码
except:
出现错误的处理
- try 尝试,下方编写要尝试代码,不确定是否能够正常执行的代码
- except 如果有异常捕获,下方编写捕获到异常,处理失败的代码
- 如果 try 里面有多个异常,只会捕获到第一个异常
3、错误类型完整捕获语法:
try:
# 可能出错的代码
pass
except 错误类型1:
# 针对错误类型1,对应的代码处理
pass
except 错误类型2:
# 针对错误类型2,对应的代码处理
pass
except (错误类型3,错误类型4):
# 针对错误类型3和4,对应的代码处理
pass
except Exception as result: # 捕获的异常信息会保存在result中
# 打印错误信息
print(result)
else:
# 没有异常才会执行的代码
pass
finally:
# 无论是否有异常,都会执行的代码
print("无论是否有异常,都会执行的代码")
4、常见的错误类型
(1)语法错误:没有遵循Python的语法,在程序编译时报错,容易发现,常见错误有:
- 关键词拼错 NameError
- 函数后面没带冒号 SyntaxError
- 字符串最后没带引号 SyntaxError
- 括号不匹配 SyntaxError
- 缩进位置错误 IndentationError
(2)运行时错误:程序在运行时报错,不容易被发现,常见错误有:
- 分母为0 ZeroDivisionError
- 整数加字符串 TypeError
- 使用没有定义的变量名 NameError
- 调用没有定义的函数 NameError
- 读取不存在的文件 IOError
(3)逻辑错误:程序运行不报错,编译过程也不报错,就是结果不符合预期,很难发现,常见错误有:
- 用错变量名
- 代码缩进错误
- 用错操作符优先级
- 用错布尔表达式
5、异常的传递
- 异常的传递 —— 当函数或方法执行出现异常,会将异常传递给函数或方法的调用一方
- 如果传递到主程序,仍然没有异常处理,程序才会被终止
6、抛出异常
- 在开发时,如果满足特定业务需求时,希望抛出异常:
- 1、创建一个 Exception类的对象
- 2、使用 raise 关键字抛出异常对象
需求
定义一个input_password函数,提示用户输入密码
如果密码长度小于10位,抛出异常
如果密码长度大于等于10位,返回输入的密码
def input_password():
password=input("请输入密码:")
if len(password)<10:
exp = Exception("密码长度不够") # 创建异常对象exp,使用异常的错误信息作为参数
raise exp # 抛出异常对象
else:
return password
try:
password = input_password()
print(password)
except Exception as result:
print(result) # 打印异常信息