致一路走来的Python爱好者——Python学习之路④

磕磕绊绊,来到第四周学习: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

发布了9 篇原创文章 · 获赞 18 · 访问量 2031

猜你喜欢

转载自blog.csdn.net/kangqiao0422/article/details/104580677
今日推荐