Python核心编程学习日记之错误处理

第10章 错误处理

  1. 异常参数:无论 reason 只包含一个字符串或是由错误编号和字符串组成的元组, 调用 str(reason) 总会返回一个良好可读的错误原因. 这样做其实是调用类的特殊方法 __str__().
  2. else子句:在try范围中没有异常被检测到时,执行else子句。
  3. finally子句是无论异常是否发生,是否捕捉都会执行的一段代码。finally可以仅和try一起使用,也可以和try-except(else也是可选的)一起使用
  4. try-finally语句不是用来捕捉异常的,无论是否发生异常,finally代码段都会被执行
  5. 上下文管理
    1. with语句:基本语法
      with context_expr [as var]:
         with_suite
      
      with语句的目的在于从流程图中把try,except和finally关键字和资源分配释放相关的代码统统去掉。with仅能工作于支持上下文管理协议的对象。
    2. 上下文管理协议:

      上下文表达式(context_expr)与上下文管理器:当with语句执行时,便执行上下文表达式来获得一个上下文管理器。它会调用__context__()方法来提供一个上下文对象。

      上下文对象,with语句块:上下文对象会调用自身的__enter__()方法,完成with语句块执行前的所有准备工作。方法的返回值赋值给as后的变量.with语句块结束之后调用__exit()__方法。

  6. 触发异常

    1.5之前,标准异常基于字符串实现。后来,所有的标准异常都是类。现在可以使用字符串,但是不建议。(@deprecated)

    1. raise语句:
      raise[SomeException [, args, [,traceback]]]

      SomeException是触发异常的名字,必须是一个字符串,类或实例。args里包含着该例外可选的参数。异常的参数总是作为一个元组被返回。

      不含任何参数的raise重新触发前一个异常。如果之前没有异常,触发TypeError.

    2. 断言语句::如果断言成功,不采取任何措施,否则触发AssertionError的异常。语法如下:assert expression[,argument]
    3. 标准异常都是内建的。它们都从根异常BaseException派生的。直接派生的有Exception,SystemExit,KeyboardInterrupt.其他的内建异常都是Exception的子类。
  7. 创建异常
    1. tempfile模块包含了创建临时文件文件名和临时文件的方法
    2. 异常和sys模块

      通过sys模块中的exc_info()函数也可以获取异常。该函数返回三元组,分别是:exc_type,异常类;exc_value,异常类的实例;exc_traceback,追踪(traceback)对象

原文地址:https://www.cnblogs.com/xyqhello/p/2867518.html