• 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:主动抛出异常



  • 相关阅读:
    hdu5360 Hiking(水题)
    hdu5348 MZL's endless loop(欧拉回路)
    hdu5351 MZL's Border(规律题,java)
    hdu5347 MZL's chemistry(打表)
    hdu5344 MZL's xor(水题)
    hdu5338 ZZX and Permutations(贪心、线段树)
    hdu 5325 Crazy Bobo (树形dp)
    hdu5323 Solve this interesting problem(爆搜)
    hdu5322 Hope(dp)
    Lightoj1009 Back to Underworld(带权并查集)
  • 原文地址:https://www.cnblogs.com/erchun/p/12380420.html
Copyright © 2020-2023  润新知