【Python自学记】7.异常处理

Python 异常处理

  • 1.异常捕获
    • 语法格式

      # 单个异常
      try:
        可能产生异常的代码
      except 异常类型名称 as 对异常类型名称重新命名:
        异常处理
          
      # 多个异常
      try:
        可能产生异常的代码
      except (异常类型名称1,异常类型名称2,...) as 对异常类型名称重新命名:
        异常处理
      
    • 捕获单个异常

      # 处理打开一个文件产生的有可能产生异常
      try:
        open('test.txt')
        print('打开文件成功!')
      except FileNotFoundError as error:
        print('捕获到异常',error)
      print('结束')
      
    • 捕获多个异常

      # 处理打开一个文件产生的有可能产生异常和打印一个不存在变量异常
      try:
        # 打开文件
        open('test.txt') 
        #打印不存在变量
        print(file)
      except (FileNotFoundError,NameError) as error:
        print('捕获到异常',error)
      print('结束')
      
    • 捕获全部异常

      # 处理打开一个文件产生的有可能产生异常和打印一个不存在变量异常
      try:
        # 打开文件
        open('test.txt') 
        #打印不存在变量
        print(file)
      except NameError as error: 
        # 只捕获了NameError异常,没捕获FileNotFoundError异常
        print('捕获到部分异常',error)
      except Exception as e:
        print('捕获到全部异常',e)
      print('结束')
      
  • 2.finally语句

    如果某段代码必须要执行,不管是否有异常产生都要执行,那就需要使用finally语句了

    #有异常
    try:
      # 打开文件
      f = open('test.txt') 
      print('打开文件成功!')
    except FileNotFoundError as error: 
      print('捕获到异常',error)
    finally:
      print('关闭打开文件的连接')
      
    
    #无异常
    try: 
      print('打开文件成功!')
    finally:
      print('必须执行代码')
    
  • 3.异常传递

    在遇到函数嵌套调用时,如果在函数内部调用的函数产生了异常,需要在外部函数被捕获并且处理,这就需要从内部调用函数把异常传递给外部函数,这就是异常传递

    def test2():
      print("函数2开始")
      print(num) #打印不存在的变量产生异常
      print("函数2结束")
      
    def test1():
      try:
        print("函数1开始")
        #调函数2
        test2()
        print("函数1结束")
      except Exception as e:
        print('捕获到异常',e)
        
    
    #调函数1
    test1()
    
  • 4.raise抛出异常

    在代码中如果我们自己想抛出异常,就可以使用Python中的raise语句

    def div(a,b):
      if b == 0:
        raise ZeroDivisionError('异常原因:除法运算,除数不能为0!')
      else:
        return a/b
      
    #调用
    div(1,0)
    

  • 当才华还配不上野心,就静下来学习
  • blog地址:hangzhi.site
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值