异常与异常处理
""" 异常处理有两种实现方法一种是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 # 当断言正确什么都不会执行