异常:程序出现的逻辑错误或者用户输入不合法导致程序崩溃死掉。
例如:
a=4; b=int(input('请输入被除数:')) c=a/b; print(c) #如果input框里的值是零(零不能做除数), #结果异常:ZeroDivisionError: division by zero异常处理:程序出现异常时编写程序的正常现象,我们可以利用一些方法将异常捕获使程序正常运行。
用esecpt来捕获异常有一下三种情况:
- 正常情况:
try: 代码段(此处不会产生异常) execpt(异常类型):(绕过执行) 对异常处理的代码段 代码段
2.产生异常try: 代码段1 产生异常代码段2 代码段3 execpt(异常类型): 对异常处理的代码段4 代码段5
a=4; b=input('请输入被除数:') try: b=int(b) c=a/b; print(c); except Exception: print('出现错误') print('程序结束!')
3.多路捕获:原则子类在前父类在后而且只捕获一个 try: 代码段1 产生异常代码段2 代码段3 execpt(异常类型): 对异常处理的代码段4 execpt(异常类型): 对异常处理的代码段4 execpt(异常类型): 对异常处理的代码段4 代码段5
a=4; b=input('请输入被除数:') try: b=int(b) c=a/b; print(c); except ZeroDivisionError: print('零不能做除数') except ValueError: print('输入值错误') except Exception: print('出现错误') print('程序结束!')
- 还可加入else语句和finally语句,如下:
a=10; b=input('请输入被除数:'); if not b.isdigit(): print('输入错误请输入数字:') else: b=int(b); if b == 0: print("被除数不能为0 ") else: c = a / b; print(c) try: b = int(b); c = a / b; print(c) except ZeroDivisionError as zero:#as作用输出英文错误类型名称 print('被除数不能为0..异常信息:',zero) except ValueError as v: print('转换数字 出错 请输入数子.异常信息:',v) except Exception: print('发生错误!') else:#没有错误执行语句 print("程序正常结束..") finally: #最终执行语句 try: del a,b,c except Exception as e: print(e) print("finally: 块儿 释放资源 ") print('程序其他代码!')
自定义异常捕获:一般继承父类,异常不会自动抛出需要用raise手动抛出class SexException(Exception): pass def inputSex(): sex=input('请输入性别:') if sex!='男' and sex!='女': raise SexException("性别只能是男 或 女 ") print('输入的性别:',sex) try: inputSex(); except SexException as s: print(s)
未完待续