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