Python基础知识:整理10 异常相关知识

1 异常的捕获

1.1 基础写法

python 复制代码
"""
    基本语法:
    try:
        可能发生错误的代码
    except:
        如果出现异常,将执行的代码

"""
python 复制代码
try:
    fr = open("D:/abc.txt", "r", encoding="utf-8")
except:
    print("出现异常了,文件未找到!将以w模式写入")
    fr = open("txt/abc.txt", "w", encoding="utf-8")
    fr.write("我是出现异常时的文件")

1.2 捕获指定的异常

python 复制代码
try:
    1/0
except ZeroDivisionError as e:
    print(e)

1.3 捕获多个异常

python 复制代码
"""
    捕获多个异常:
    语法格式:
        try:
            print(1/0)
        except (ZeroDivisionError,NameError) as e:    通过元组的形式存放多个异常类型
            print(e)  
"""
python 复制代码
try:
    print(1/0)
except (ZeroDivisionError, NameError) as e:
    print(e)

1.4 捕获所有异常

python 复制代码
"""
    捕获所有异常:
    方式一:
        基本语法:
        try:
            可能发生错误的代码
        except:
            如果出现异常,将执行的代码
    
    方式二: 略
        语法格式:
            try:
                print(1/0)
            except Exception as e:
                print(e)
"""
python 复制代码
try:
    print(1 / 0)
except Exception as e:
    print(e)

1.5 异常else

python 复制代码
"""
    异常else:
        当没有异常发生时,执行else中的代码  (可选的)
"""
python 复制代码
try:
    print(1)
except Exception as e:
    print(e)
else:
    print("没有异常发生!")

1.6 异常finally

python 复制代码
"""
    异常finally:
        无论是否发生异常,都会执行finally中的代码  (可选的)
"""
python 复制代码
try:
    fr = open("txt/abc.txt", "r", encoding="utf-8")
    print(fr.readline())
except Exception as e:
    print(e)
else:
    print("没有异常发生!")
finally:
    fr.close()

2 异常的传递性

python 复制代码
"""
    异常具有传递性

    例:当函数func1中抛出异常时,并且没有捕获处理这个异常的时候,
    异常会传递到函数func2中,如果func2中也没有捕获处理这个异常,
    那么异常会继续传递到main函数中,main函数就会捕获这个异常,这就是异常的传递性

    注意:当所有函数都没有捕获异常的时候,程序就会报错!
"""

当在主函数中没有捕获处理异常时,会报异常错误

处理后

python 复制代码
def func1():
    print("func1开始执行")
    num = 1/0
    print("func1执行完毕")

def func2():
    print("func2开始执行")
    func1()
    print("func2执行完毕")


def main():
    print("main开始执行")
    try:
        func2()
    except Exception as e:
        print(e)
    print("main执行完毕")

main()
相关推荐
猎嘤一号1 小时前
Windows11桌面解锁守护脚本
开发语言·python·opencv
蓝婷儿2 小时前
Python 数据建模与分析项目实战预备 Day 2 - 数据构建与字段解析(模拟简历结构化数据)
开发语言·python·机器学习
青衫客362 小时前
浅谈 Python 中的 yield——yield的返回值与send()的关系
开发语言·python
测试老哥3 小时前
Python+Selenium实现自动化测试
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
Dxy12393102166 小时前
Python PDFplumber详解:从入门到精通的PDF处理指南
开发语言·python·pdf
在努力的韩小豪8 小时前
如何从0开始构建自己的第一个AI应用?(Prompt工程、Agent自定义、Tuning)
人工智能·python·llm·prompt·agent·ai应用·mcp
Otaku love travel9 小时前
实施运维文档
运维·windows·python
测试老哥10 小时前
软件测试之单元测试
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
presenttttt10 小时前
用Python和OpenCV从零搭建一个完整的双目视觉系统(六 最终篇)
开发语言·python·opencv·计算机视觉
测试199811 小时前
软件测试之压力测试总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·压力测试