Python:except和except Exception as e:的区别

参考:Stack Overflow

  1. 后者可以访问异常对象的属性。
    >>> def catch():
    ...     try:
    ...         asd()
    ...     except Exception as e:
    ...         print e.message, e.args
    ... 
    >>> catch()
    global name 'asd' is not defined ("global name 'asd' is not defined",)
    
  2. 前者接受所有异常,而后者只接受你【想要】捕获的异常。例如,前者接受了KeyboardInterrupt而后者没有:
    >>> try:
    ...     input()
    ... except:
    ...     pass
    ... 
    >>> try:
    ...     input()
    ... except Exception as e:
    ...     pass
    ... 
    Traceback (most recent call last):
      File "", line 2, in 
    KeyboardInterrupt
    
    下面是一个简短的列表:
    issubclass(BaseException, BaseException)
    #>>> True
    issubclass(BaseException, Exception)
    #>>> False
    
    
    issubclass(KeyboardInterrupt, BaseException)
    #>>> True
    issubclass(KeyboardInterrupt, Exception)
    #>>> False
    
    
    issubclass(SystemExit, BaseException)
    #>>> True
    issubclass(SystemExit, Exception)
    #>>> False
    
    如果你想捕捉到其中任何一个,最好这样:
    except BaseException:
    
    来指出你知道自己在做什么。

你可能感兴趣的:(python,python,开发语言,前端)