@@ -206,10 +206,12 @@ finally:
206206 suite_finally
207207```
208208
209-
210209### 自定义异常:
210+
211211raise语句可显式触发异常:
212+
212213raise [ SomeException [ , args [ , traceback]]]
214+
213215- SomeException: 可选,异常的名字,仅能使用字符串、类或实例;
214216- args:可选,以元组的形式传递给异常的参数;
215217- traceback:可选,异常触发时新生成的一个用于异常-正常化的跟踪记录,多用于重新引发异常时;
@@ -252,18 +254,21 @@ ValueError Traceback (most recent call last)
252254 4 return [(x1,x2) for x1 in seq1 for x2 in seq2 ]
253255
254256ValueError : Seq must not be empty.
255-
256257```
257258
258259### raise语句的用法大全;
260+
259261![ raise_usage] ( /images/raise_usage.png )
260262
261263### 异常对象:
264+
262265Python异常时内置的经典类Exception的子类的实例:
266+
263267 为了向后兼容,Python还允许使用字符串或任何经典类实例;
264268 Python2.5之后,Exception是从BaseException继承的新式类;
265269
266270Python自身引发的所有异常都是Exception的子类的实例;
271+
267272大多的标准异常都是由StandardError派生的,其有3个抽象的子类;
268273- ArithmeticError
269274 由于算术错误而引发的异常基类;
@@ -326,28 +331,38 @@ Python自身引发的所有异常都是Exception的子类的实例;
326331### 自定义异常类
327332#### 自定义异常和多重继承
328333较有效的方法是从自定义异常类和标准异常类进行多重继承,例如:
334+
335+ ``` python
329336class CustomAttributeError (CustomException ,AttributeError ):
330337 pass
338+ ```
331339
332340#### 标准库中使用的其他异常
333341python标准库中的许多模块都定义了自己的异常类,如socket中的socket error
342+
334343 等同于自定义的异常类;
335344
336345
337346### assert语句
347+
338348assert语句用于在程序中引入调试代码
349+
339350assert condition[ ,expression]
351+
340352 如果condition条件满足,则assert不做任何操作;
341353 如果condition条件不满足,则assert使用expression作为参数实例化,AssertionError并引发结果实例;
342354
343- 注意:如果运行Python是使用了-O优化选项,则assert将是一个空操作:编译器不为assert语句生成代码;
355+ #### 注意:
356+ 如果运行Python是使用了-O优化选项,则assert将是一个空操作:编译器不为assert语句生成代码;
344357
345- 运行Python是不使用 -O选项,则__ debug__ 内置变量为True,否则其值为False;
358+ 运行Python时不使用 -O选项,则__ debug__ 内置变量为True,否则其值为False;
346359
347360assert语句相当于下面的代码:
361+ ``` python
348362if __debug__ :
349363 if not condition:
350364 raise AssertionError ,< expression>
365+ ```
351366
352367assert实现: 手动触发异常;
353368 assert condition[ ,expression]
0 commit comments