异常与异常处理

"""
异常处理有两种实现方法一种是if..else,一种是try..except
"""
user_in = input(">>  ")
print(int(user_in))    # 非法输入报错,ValueError: invalid literal for int() with base 10: 'dvwv'

异常处理,可以将不同代码的相同异常放在一起处理,增加程序可读性
    try:
        user_in1 = input(">>  ")
        print(int(user_in1))

        user_in2 = input(">>  ")
        print(int(user_in2))
    except ValueError as e:        # e : 异常值
        print(e)                    # invalid literal for int() with base 10: 'dvwev'

多分支:可以检测多个异常
    try:
        user_in1 = input(">>  ")
        print(int(user_in1))

        l = {"name":"alxe"}
        print(l["na"])
    except ValueError as e:        # e : 异常值
        print(e)                    # invalid literal for int() with base 10: 'dvwev'
    except KeyError as e:          # 注意KeyError的值只有key的内容
        print(e)                    # 'na'
万能异常
    try:
        user_in1 = input(">>  ")
        print(int(user_in1))

        l = {"name":"alxe"}
        print(l["na"])

    except Exception as e:          # Exception可以检测所有类型的异常,但无法检测SyntaxError
        print(e)

try...expect的其他结构
    try:
        user_in1 = input(">>  ")
        print(int(user_in1))

        l = {"name":"alxe"}
        print(l["na"])

    except Exception as e:          # Exception可以检测大部分类型的异常,无法检测SyntaxError
        print(e)
    else:
        print("当程序没有异常时会执行")
    finally:
        print("不管有没有异常都会执行,通常用来做清理工作")

断言  assert:可以自己断定某个逻辑是否成立,不成立就报错
    # 使用场景是你断言的逻辑得出的值在接下来的代码中会被使用,而你想得到指定的值,
    #就可以断言,不是你想要的,程序就会报错
    assert 1 == 2
    """
    Traceback (most recent call last):
      File "E:/python/DOME.C/s3_28/异常处理.py", line 55, in <module>
        assert 1 == 2
    AssertionError
    """
    assert 1 == 1   # 当断言正确什么都不会执行

 

posted @ 2020-06-13 17:51  pywhy  阅读(119)  评论(0编辑  收藏  举报