micropython exception handling



  • def _fn():
      try:
        raise OSError
      except OSError: 1/0
      except Exception: print('_fn exception handler')
    
    try:
      _fn()
    except Exception: print('_caller exception handler') 
    

    Can someone please explain to me why an error in a functions except OSError section is handled by the except Exception section of the calling program rather than the exception Exception of the function itself? I mean the Exception in the fn's except OSError is between that fn's try & except Exception, so shouldn't it be handled by the fn's except Exception?

    >>>
    _caller exception handler
    >
    


  • @kjm said in micropython exception handling:

    I mean the Exception in the fn's except OSError is between that fn's try & except Exception

    No, it´s not, it is outside your try. Try this instead:

    def _fn():
      try:
        try:
          raise OSError
        except OSError: 1/0
      except Exception: print('_fn exception handler')
    
    try:
      _fn()
    except Exception: print('_caller exception handler')
    

    Johan


Log in to reply
 

Pycom on Twitter