磕磕绊绊,来到第四周学习:Python中多变的异常
感觉自己又行了
老板来碗毒鸡汤,助我们冲冲冲
上代码(异常处理三大块)
001
# -*- coding: utf-8 -*-
# @Time : 2020/2/14 21:55
# @Author : 浩轩
# @File : 01_异常处理一.py
'''
演示异常处理方案一
'''
#对立思维:if else (有我没你,有你没我)
print("程序开始")
try: # 把有可能引发异常的代码,放入到try的控制范围中
a = 1
print(a) # 只要出错,直接跳入except管辖范围内; 如若try内代码成功执行,则直接跳过except
except: # 异常出现之后的处理方案,放入到except进行控制
print("抛出异常")
print("程序结束")
002
# -*- coding: utf-8 -*-
# @Time : 2020/2/14 22:05
# @Author : 浩轩
# @File : 02_异常处理二.py
'''
演示异常处理二
'''
try:
print("读文件")
f = open('text', 'r')
# f.read() #阅读
f.write('我有遇见你运气,却没有留住你的本事') # 书写 出现问题
# f.close() #关闭文件,释放内存 文件如果未关闭,严重泄漏内存
print("读取完毕")
except: # 可以没有
print("读取文件失败")
finally: # 作用:一定会强制执行里面的代码
print("我一定要执行!!!")
f.close()
003
# -*- coding: utf-8 -*-
# @Time : 2020/2/14 22:20
# @Author : 浩轩
# @File : 03_异常处理三.py
print("程序开始")
try: # 可能引发异常现象的代码 必选
i = "我可能会出问题"
print(i)
print(a)
print("程序没问题一")
except: # 出现异常现象的代码处理 二选一 #对try里面的代码运行失败的反馈
print("浩轩帮你修复") # except 与 else 是对立面
else: # 可选 未出现异常现象的代码处理 #当作对try里面的代码运行成功的反馈
print("程序没问题二")
finally: # try代码块结束后运行的代码 二选一
print("我一定会执行")
print('程序结束')
1.异常的精细化处理
# -*- coding: utf-8 -*-
# @Time : 2020/2/17 20:44
# @Author : 浩轩
# @File : 04_异常精细化处理.py
'''
演示捕获具体异常
'''
try:
# i = "haoxuan" #如果将i注释 则会报NameError错误
print(i) # 一但碰到错误break continue
print(i.index('k'))
except NameError:
print("变量i没有被定义,因此出现了错误")
except ValueError:
print("该字符的索引查询失败")
except NameError:
print("逻辑错误")
2.获取异常具体信息
# -*- coding: utf-8 -*-
# @Time : 2020/2/17 20:57
# @Author : 浩轩
# @File : 05_获取异常具体信息.py
try:
print(1 / 0)
except NameError: # 异常类名,类
print('错误发生')
except Exception: # 父类异常 一般将其放在最后
print('出现了未知错误')
try:
print(b) #不定义b的值,只为报错
except NameError as error: #对象
print("具体的异常信息是:",error)
3.构造异常现象
'''
构造异常现象
raise 异常类对象
'''
a = 1
b = 0
i = a / b # 不能作为被除数出现
# /因此程序会去检查吧 是否==0
if b == 0: # bug 主动制造
# 抛出(主动出现)具体的异常,报错 制造异常
raise ZeroDivisionError('division by zero')
4.异常处理机制
# -*- coding: utf-8 -*-
# @Time : 2020/2/17 21:38
# @Author : 浩轩
# @File : 07_异常处理机制.py
#001 2调用1 1调用0
def demo():
print(i)
def demo1():
demo()
def demo2():
demo1()
try:
demo2()
except:
print("出现问题")
#002 半路拦截处理
def demo():
print(i)
def demo1():
try:
demo()
except:
print("已在此处处理")
def demo2():
demo1()
demo2()
#003. 用Debug去慢慢理解
try:
def demo():
print(i)
def demo1():
demo()
def demo2():
demo1()
try:
demo2()
except NameError:
print("因为变量名没有被定义")
except ZeroDivisionError:
print("不能做除法")
本周的内容先到这里吧,救我个人而言,异常这一块后期爬虫会应用较多,希望观众姥爷们引起重视
下周会给大家推实列,带大家做一个基础的用户登录校验,希望通过这四篇文章的学习,能在下周派上用场,我们一起加油,如有疑问评论区见,古德拜!
@Author:HaoXuan