目录
异常捕获就是针对某一部分可能出错的代码,在运行期间一旦出现错误就捕获它,在捕获到错误后将错误信息写入日志文件或进行其他的处理,然后接着继续运行后续的代码,捕获异常的目的就是不让代码停止运行。?
TypeError //当操作或函数应用于不适当类型的对象时引发。
ValueError //当函数或操作的参数具有正确的类型但不合法时引发。
NameError //当尝试访问一个未定义的变量时,会抛出NameError异常。
IndexError //当尝试访问列表、元组或字符串中不存在的索引时引发。
KeyError //当尝试访问字典中不存在的键时引发。
ZeroDivisionError //当尝试除以零时引发。
IOError //当尝试读取不存在的文件或无法访问文件时引发。
ImportError //当尝试导入不存在的模块或包时引发。
AttributeError //当尝试访问对象不存在的属性时引发。
KeyboardInterrupt //当用户中断程序执行时引发。
try:
? ? ...
except:
? ? ...
else:
? ? ...
try:
result = 2 + 'a'
print(result)
except TypeError:
print("操作或函数应用于不适当类型")
try:
result = 1 + 2
print(result)
except TypeError:
print("操作或函数应用于不适当类型")
else:
print("数字1可以和数字2直接相加")
print("-------------------------------")
try:
result = "a" + 1
print(result)
except TypeError:
print("操作或函数应用于不适当类型")
else:
print("字符串a不能和数字1直接相加")
总结:
根据上述代码可知
try语句中的代码块没有发生任何异常时,else语句中的代码块才会被执行
try:
...
except Exception as e:
...
else:
...
try:
answer = int(input("请输入一个整数:"))
except Exception as e:
print("程序出现错误" + str(e))
else:
print("输入的是整数")
输入2.5
????????程序出现错误invalid literal for int() with base 10: '2.5'
输入a
????????程序出现错误invalid literal for int() with base 10: 'a'
输入1
????????输入的是整数
try:
...
except:
...
finally:
...
try:
result = "a" + 1
print(result)
except TypeError:
print("操作或函数应用于不适当类型")
finally:
print("结果对不对的都输出")
总结:
根据上述代码可知?
无论是否发生异常,都会执行 finally 分支中的代码。try 分支或者任何 except 分支执行之后立即执行 finally 分支。