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()
相关推荐
困死,根本不会9 小时前
蓝桥杯python备赛笔记之(十)数论基础 & 日期问题
笔记·python·蓝桥杯
輕華9 小时前
Python 命令行参数处理:sys.argv 与 argparse 深度对比
python
清水白石0089 小时前
Python 内存陷阱深度解析——浅拷贝、深拷贝与对象复制的正确姿势
开发语言·python
国家二级编程爱好者9 小时前
删除typora文档没有引用的资源文件
git·python
进击的雷神9 小时前
邮箱编码解码、国际电话验证、主办方过滤、多页面深度爬取——柬埔寨塑料展爬虫四大技术难关攻克纪实
爬虫·python
深蓝电商API10 小时前
多线程 vs 异步 vs 多进程爬虫性能对比
爬虫·python
进击的雷神10 小时前
相对路径拼接、TEL前缀清洗、多链接过滤、毫秒级延迟控制——日本东京塑料展爬虫四大技术难关攻克纪实
爬虫·python
云溪·10 小时前
Milvus向量数据库混合检索召回案例
python·ai·milvus
柒.梧.10 小时前
Java集合核心知识点深度解析:数组与集合区别、ArrayList原理及线程安全问题
java·开发语言·python
AsDuang11 小时前
Python 3.12 MagicMethods - 49 - __imatmul__
开发语言·python