zoukankan      html  css  js  c++  java
  • day21 03 异常处理

    day21 03 异常处理

    1.什么是异常

    异常:程序运行时发生错误的信号

    错误:语法错误(一般是不能处理的异常)

               逻辑错误(可处理的异常)

    特点:程序一旦发生错误,就从错误的位置停下来,不再继续执行后面的内容

    2.怎么处理异常呢?

    比如下面类型代码的异常:

    ret=int(input('number >>>'))
    print(ret*'*')

    如果执行后用户输入的不是数据就会报错:

    number >>>a
    Traceback (most recent call last):
      File "<encoding error>", line 1, in <module>
    ValueError: invalid literal for int() with base 10: 'a'

    可以看到这个错误类型是:ValueError

    处理的方法:

    try:#异常处理语句
        ret=int(input('number >>>'))#把认为有异常错误需要处理的内容放在try.....except 错误类型的机制里面
        print(ret*'*')
    except ValueError:#捕获错误的类型 异常处理语句,只能处理对应的错误
    print('您输入的内容错误,请输入一个数字')

    当再次输入错误的内容时,它不会标红报错,而是给你提示,就显得比较友好:

    number >>>a
    您输入的内容错误,请输入一个数字

    使用try和except就能处理异常:

         try是我们要处理的代码,从前面开始执行,如果有多个错误,遇到第一个错误时就停止了,后面的错误就不会处理了

         except后面跟一个错误类型,当代码发生错误且错误类型符合的时候,就会执行except中的代码

         except是支持多分支

        有没有一个能处理所有错误的类型万能机制:Exception:

                只告诉了在哪里错了,但是你不知道在哪里出错了,比较笼统

                所以有了这个万能处理机制,仍需要把能预测到的问题单独处理

                单独处理的所有内容都应该写在万能异常之前

    try:
        print('111')
        1/0
        [][3]
        int('a')
        {}['key']
        print('222')
        ret=int(input('number >>>'))
        print(ret*'*')
    except Exception:
        print('你错了,老铁')
    except ValueError:
        print('您输入的内容错误,请输入一个数字')
    #如果将这个分支放到万能异常的后面,如果有错误,就会先找到万能异常机制,就不会走下面分支了,
    # 也就不会具体提醒了,即这个分支也就失效了
    111
    你错了,老铁

    如果将分支机制放在万能机制的前面,当try里面真的有分支对应的错误类型的时候就会具体给出提示

         else:没有异常执行else里面的代码

    try:
        ret=int(input('number >>>'))
        print(ret*'*')
    except ValueError:
        print('您输入的内容错误,请输入一个数字')
    except KeyError:
        print('请输入正确的格式')
    except Exception:
        print('你错了,老铁')
    else:
        print('没有异常的时候执行else里面的代码')

    假如输入一个正确的:

    number >>>5
    *****
    没有异常的时候执行else里面的代码

         finally:不管代码是否异常,都会执行

    try:
        ret=int(input('number >>>'))
        print(ret*'*')
    except ValueError:
        print('您输入的内容错误,请输入一个数字')
    except KeyError:
        print('请输入正确的格式')
    except Exception:
        print('你错了,老铁')
    else:
        print('没有异常的时候执行try里面的代码')
    finally:
        print('====')

    假如输入一个正确的:

    number >>>10
    **********
    没有异常的时候执行try里面的代码
    ====

     输入一个错误的:

    number >>>a
    您输入的内容错误,请输入一个数字
    ==== #输入的a不符合还是会执行
  • 相关阅读:
    Pyramid of Glasses 酒杯金字塔 [CF-676B]
    BZOJ 2456mode
    Hamburgers [CF-371C]
    lowbit
    two point
    大O表示法的理解
    6. 第 6 章 队列
    5. 第 5 章 栈
    3. 第 3 章 向量
    10. 第 10 章 指针
  • 原文地址:https://www.cnblogs.com/wxm422562/p/10810080.html
Copyright © 2011-2022 走看看