Python基础教程(14)异常捕获与处理

TangLu 未命名 2020-01-07 3409 0

一、什么是异常处理

异常处理也叫做异常捕获,它是对程序可能出现的错误进行提前准备和处理的行为,目的是让程序不会因为一小段错误而结束掉,而是根据提前设置好的规则进行一些操作


二、Python常见的异常类型参考

IndexError:超出索引范围

NameError: 变量未定义
SyntaxError:语法错误
TypeError:数据类型错误


三、Python异常处理语法

1、在Python中使用try语句进行异常捕获,基本语法如下

try:
  可能出现的异常代码
except
  出现异常后执行的代码


2、未指定异常类型时,捕获所有异常

try:
  f = open("/data/test.txt","r",encoding="UTF-8")  #该文件并不存在,所以直接open是会报错的,这里使用try进行捕获
except:
  print("出现异常,该文件并不存在,替换为w模式打开")  #w模式会自动创建文件
  f = open("/data/test.txt","w",encoding="UTF-8")


3、指定异常类型时只捕获指定类型的异常

try:
  print(name)
except NameError as e:
  print("出现了变量未定义的异常")


4、无论是否异常都要进行处理——finally指令

try:
  f = open("/data/test.txt","r",encoding="UTF-8")  #该文件并不存在,所以直接open是会报错的,这里使用try进行捕获
except Exception as e:          #捕获所有异常,可以简写为except
  print("出现异常,该文件并不存在,替换为w模式打开")  #w模式会自动创建文件
  f = open("/data/test.txt","w",encoding="UTF-8")
finally:
  f.close()           #不管是否有异常,最终都要执行该操作


5、使用raise自定义异常

def my_abs(x):
  if not isinstance(x,(int,float)):
    raise TypeError('参数类型不正确,只能为数值类型')  #使用raise捕获TypeError类型的异常并返回自定义消息


6、异常的传递性

如果函数之间有调用关系,只需要在最后一层调用时进行捕获即可,因为异常会传递给它

def func1():
  print("func1开始执行")
  num = 1 / 0  #出现除0异常
  print("func1执行结束")
  
def func2():
  print("func2开始执行")
  fun1()  #调用func1
  print("func2执行结束")
  
def main():
  try:
    func2()
  except Exception as e:
    print(f"出现{e}异常")
  
main()


评论