python笔记 try-except-else-finally

  • 代码示例
try:
    try:
        i = 5 / 0 
    except IOError:
        print("io-error")
    except ZeroDivisionError:
        print("n/0 error")
        raise
    except Exception:
        print("exception")
    else:
        print("correct")
    finally:
        print("finally")
except IOError:
    print("2-io-error")
except ZeroDivisionError:
    print("2-n/0 error")
except Exception:
    print("2-exception")
else:
    print("2-correct")
finally:
    print("2-finally")
  • 执行结果
$ python test.py
n/0 error
finally
2-n/0 error
2-finally

总结

  1. 发生异常时,只会被第一个匹配的异常捕捉。
  2. 没发生异常则进入else
  3. 不论是否发生异常都会执行finally
  4. raise可以将异常抛到外层,默认抛出当前异常
  5. raise也可以指定异常,例如raise IOError,指定异常必须继承BaseException
  6. raise BaseException("123456")可以指定异常信息,通过 except BaseException as e: print(e)打印该信息。
  7. 如果没有raise则外层不会感知到异常发生。

你可能感兴趣的:(python笔记 try-except-else-finally)