python学习——异常

Posted 2chun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习——异常相关的知识,希望对你有一定的参考价值。


对于有可能会出错的代码,我们可以对这行代码进行异常捕获
try-except:
try-except--else:
try-except--else--finally:

import random

try:
    # 对于有可能会出错的代码,我们可以对这行代码进行异常捕获
    price = float(input("请输入橘子价格:"))
except:
    # try里面的代码,出现了异常执行except中的代码
    print("输入价格的代码出错了")
else:
    # try里面的代码没有出现异常的时候执行else的代码
    n = random.randint(1, 100)
    sum_price = price * n
    print("您购买的橘子为{:.2f}斤,每斤{:.2f}元,应支付金额为{:.2f}".format(n, price, sum_price))
finally:
    # 不管try的代码是否出现异常,都会执行
    print("这个是finally中的代码")
# 捕获一个指定类型的异常
try:
    n = int(input("请输入一个数值:"))
    print(n1)
except NameError as e:
    print("代码出错啦")
    print("当前出错的原因:",e)


# 捕获多个异常类型,
# 方式一:使用多个except(不同的异常类型,做不同的处理)
try:
    n = int(input("请输入一个数值:"))
    print(n1)
except NameError as e:
    print("代出现了namerror")
    print("当前出错的原因:", e)
except ValueError as e:
    print("代出现了valueerror")
    print("当前出错的原因:", e)


# 方式二:一个except(不同的异常类型,做相同的处理)
try:
    n = int(input("请输入一个数值:"))
    print(n1)
except (NameError,ValueError,KeyError) as e:
    print("代码出错")
    print("当前出错的原因:", e)


# 捕获不确定的异常类型,可以直接捕获常见异常类型的父类
try:
    import requests
    requests.get(url="www.baidu.com")
except Exception as e:
    print(e)

 

 

else的应用场景

import os

def copy_file(path):
    try:
        # 第一步:获取目标路径中所有的文件和目录
        file_list = os.listdir(path)
    except FileNotFoundError as e:
        print("你传入的路径不对,出现了错误,错误提示:{}".format(e))
    else:
        # 第二步:遍历文件,
        for item in file_list:
            # 获取该文件的路径
            file_path = os.path.join(path, item)

            # 第三步:判断是文件还是目录,是文件的话就进行copy
            if os.path.isfile(file_path):
                # 打开文件,读取内容
                with open(file_path, r, encoding=utf8) as f:
                    contnet = f.read()

                # 在当前目录创建副本文件,写入内容
                new_file = cp + item
                with open(new_file, w, encoding=utf8) as f:
                    f.write(contnet)

copy_file("python")

 

 

finally的应用

import random

try:
    # 对于有可能会出错的代码,我们可以对这行代码进行异常捕获
    price = float(input("请输入橘子价格:"))
except NameError:
    # try里面的代码,出现了异常执行except中的代码
    print("输入价格的代码出错了")
else:
    # try里面的代码没有出现异常的时候执行else的代码
    n = random.randint(1, 100)
    sum_price = price * n
    print("您购买的橘子为{:.2f}斤,每斤{:.2f}元,应支付金额为{:.2f}".format(n, price, sum_price))
finally:
    # 不管try的代码是否出现异常,都会执行
    print("这个是finally中的代码")

print("这个是finally之外的的代码")


# 通过finally来关闭文件

f = open("text.txt", "w",encoding="utf8")
try:
    n = int(input("请输入数字"))
except NameError:
    f.write("代码错误了")
else:
    f.write("代码没有错误了")
finally:
    print("finally执行了")
    f.close()

 

raise:主动抛出异常



以上是关于python学习——异常的主要内容,如果未能解决你的问题,请参考以下文章

代码学习PYTHON 异常处理

python学习——异常

Python学习总结

python学习24之异常

Python 2.7 学习笔记 异常处理

python学习_异常和抛出