Python3 异常

Python3 异常

目录

Python 异常

try-except

try-except-else

处理ZeroDivisionError异常

处理FileNotFoundError异常


Python使用一个叫做异常的特殊对象,来处理程序执行期间发生的错误。

当程序发生错误时,Python会创建一个异常对象,如果程序中没有包含对该异常的处理代码,那么程序将终止,并返回一个traceback,里面包含有关的错误报告;相反,如果包含了对异常处理的代码,程序将继续运行。

try-except

Python使用try-except代码块来处理异常。把可能发生异常的代码放在try中,except将对产生的异常对象进行处理:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

# 可能发生异常的代码放在try代码块中
try:
    print(5 / 0)
# except对产生的异常对象进行处理
except ZeroDivisionError:
    print("除数不能为零")

print('计算结束')

运行结果:

F:\project\venv\Scripts\python.exe F:/project/error.py
除数不能为零
计算结束

try-except-else

try-except-else的工作原理是,当try中的代码发生异常时,就执行except中的代码;当try中的代码成功执行时,就执行else中的代码。所以把可能发生异常的代码放在try中,把仅在try中代码成功执行时才需要执行的代码放在else中,except是对产生的异常对象完成相应的处理工作。

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

# 可能发生异常的代码放在try代码块中
try:
    print(6/ 3)
# except对产生的异常对象进行处理
except ZeroDivisionError:
    print("除数不能为零")
# 仅当try中代码执行成功时才执行else
else:
    print("运算正常")

print('计算结束')

运行结果:

F:\project\venv\Scripts\python.exe F:/project/error.py
2.0
运算正常
计算结束

处理ZeroDivisionError异常

见上面的代码。

处理FileNotFoundError异常

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

file_name = 'a.txt'

try:
    with open(file_name) as file_object:
        content = file_object.read()
except FileNotFoundError:
    msg = "找不到文件"+file_name
    print(msg)
else:
    print(content)

运行结果:

F:\project\venv\Scripts\python.exe F:/project/FileNotFoundError.py
找不到文件a.txt

实例:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-


def pet_names():
    """读取所有宠物名字的函数"""
    file_names = ['cats.txt', 'dogs.txt', 'mouse.txt']
    try:
        for t in file_names:
            with open(t) as file_object:
                names = file_object.read()
                print(names)
    except FileNotFoundError:
        pass
    else:
        print("\n无异常")


status = input("你是否想要给宠物取名字?(Y OR N)")
if status == 'Y':
    print("请从以下名字中选一个你喜欢的名字吧:")
    pet_names()
else:
    print("已退出")

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值