异常就是程序运行错误或者逻辑混乱,返回了错误的代码,为了不让用户看到错误的代码,所以需要对异常的代码进行错误处理
出现了异常,程序就不在往下执行。
python捕获异常 用 try except 语句 如上图
try 语句中是可能出现异常的代码
except 语句中是对程序异常的处理 ,可以有多个异常,放在元组中存储
完整的异常捕获语句 如下:
try:
有可能出现异常的代码
except 捕获的异常名:
处理异常
else:
没有异常就执行这里的语句,可以不写
finally:
这个语句块里的代码,不管有没有异常,都会执行 必须执行的代码可以写在这里 如 文件关闭
异常的传递 :
异常的嵌套 :
函数的嵌套调用try :
#########第一种情况;
########第二种情况 :
自定义异常
通过继承异常类,就可以自定义异常
可以用raise 语句来触发(抛出)一个异常。异常或者错误对象必须有一个名字,应该继承Exceprion或者是Error类
class NameInputException(Exception):
#自定义异常类NameInputException,继承Exception类
def __init__(self,msg):# 一个参数 msg 信息
self.msg=msg
class GenderException(Exception):
#自定义异常类GenderException,继承Exception类
def init(self,msg): # 一个参数,msg 信息
self.msg=msg
def Input():
try :
name = input('输入名字:')
if len(name)<3:
#判断如果输入的名字长度小于3 抛出异常NameInputException
是一个异常对象(参数)
raise 触发抛出 不在往下执行
raise NameInputException('长度至少是3 输入的长度是%s'%len(name))
except NameInputException as ni:
#有自己的捕获语句,就使用自己的,执行自有的语句处理异常信息
print('NameError 自己捕获执行 %s'%ni)
else:
gender = input('输入性别:')
if gender !='男' and gender !='女':
#判断输入的性别信息,如果输入的不是男 或 女 抛出异常GenderException
是一个异常对象,自己没有捕获异常的方式,raise 触发向外抛出异常
raise GenderException('请输入正常选项:男或女 ,你输入的是%s'%gender)
#######def main():
try:
Input()
#执行语句,捕获到抛出的异常 执行处理异常信息的语句
except Exception as ex:
print('genderError 接盘侠 %s 执行'%ex)
main()
一些常见的异常
Exception 基础异常
ZeroDivisionError 除数为0异常
OverflowError 内存溢出
ImportError 导入模块异常
NameError 没有声明对象
RuntimeError 一般运行时异常
NotImplementedError 未实现方法
SyntaxError 语法错误
IOError IO操作异常
...