• Python——异常处理


    异常:代码中的逻辑错误

    程序一旦发生错误,就从错误的位置停下来不继续执行

    使用try和except就能处理异常

    try:
        int('aaa')
        print('111')    # 检查错误的位置
        1/0
        print('222')
        name
        print('333')
        2 + '3'
        [][3]
        {}['k']
        ret = int(input('number >>> '))
        print(ret * '*')
    except ValueError:
        print('输入的数据类型有误')
    except IndexError:
        print('超出列表的最大长度了')
    except Exception:
        print('你错了')
    else:
        print('没有异常的时候执行此代码')
    finally:
        print('不管代码有没有异常,都执行此代码')
    View Code

      1. try:

        需要处理的错误代码

      2. except:     

        except + 错误类型:当代码发生错误且错误类型符合时,执行此段代码
        except 支持多分支
        except + Exception: 万能异常处理
          有了万能异常处理仍然要把能预测到的问题单独处理
          单独处理的所有内容都应该写在万能异常之前

    # 可以看到报错信息的异常处理
    
    try:
        int('aaa')
        print('111')    # 检查错误的位置
        1/0
        print('222')
        name
        print('333')
        2 + '3'
        [][3]
        {}['k']
        ret = int(input('number >>> '))
        print(ret * '*')
    except Exception as error:  # 可以看到报错信息
        print('你错了',error)
    View Code

      3. else:

        没有异常的时候执行此代码

      4. finally:

        不管代码有没有异常,都执行此代码
        finally 和 return 相遇的时候,依然会执行
          执行到return时,发现后面还有finally,先执行finally,再返回
          常用于在函数中做异常处理,不管是否异常,去做一些收尾工作(如:关闭文件)

    # finally的用法
    
    # (1)不用finally
    def func():
        try:
            f = open('file','w')
            f.close()
            return True
        except:
            f.close()
            return False
    print(func())
    
    
    # (1)使用finally
    # 执行到return时,发现后面还有finally,先执行finally,再返回
    def func():
        try:
            f = open('file','w')
            return True
        except:
            return False
        finally:
            print('执行finally了')
            f.close()
    print(func())
    View Code
    长得丑就应该多读书。我爱学习,只爱学习,最爱学习!
  • 相关阅读:
    Cogs 465. 挤牛奶
    洛谷P1083 借教室
    Cogs 1264. [NOIP2012] 开车旅行(70分 暴力)
    2017-10-19 NOIP模拟赛
    Codevs 2144 砝码称重 2
    洛谷P1450 [HAOI2008]硬币购物
    洛谷P2534 [AHOI2012]铁盘整理
    洛谷P1731 生日蛋糕
    2017-10-18 NOIP模拟赛
    洛谷P1074 靶形数独
  • 原文地址:https://www.cnblogs.com/xc-718/p/9768725.html
Copyright © 2020-2023  润新知