Skip to content

Commit 4c55dca

Browse files
committed
Updates Python异常.md
Auto commit by GitBook Editor
1 parent a7793b3 commit 4c55dca

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

Python异常.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,10 +206,12 @@ finally:
206206
suite_finally
207207
```
208208

209-
210209
### 自定义异常:
210+
211211
raise语句可显式触发异常:
212+
212213
raise [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

254256
ValueError: Seq must not be empty.
255-
256257
```
257258

258259
### raise语句的用法大全;
260+
259261
![raise_usage](/images/raise_usage.png)
260262

261263
### 异常对象:
264+
262265
Python异常时内置的经典类Exception的子类的实例:
266+
263267
为了向后兼容,Python还允许使用字符串或任何经典类实例;
264268
Python2.5之后,Exception是从BaseException继承的新式类;
265269

266270
Python自身引发的所有异常都是Exception的子类的实例;
271+
267272
大多的标准异常都是由StandardError派生的,其有3个抽象的子类;
268273
- ArithmeticError
269274
由于算术错误而引发的异常基类;
@@ -326,28 +331,38 @@ Python自身引发的所有异常都是Exception的子类的实例;
326331
### 自定义异常类
327332
#### 自定义异常和多重继承
328333
较有效的方法是从自定义异常类和标准异常类进行多重继承,例如:
334+
335+
```python
329336
class CustomAttributeError(CustomException,AttributeError):
330337
pass
338+
```
331339

332340
#### 标准库中使用的其他异常
333341
python标准库中的许多模块都定义了自己的异常类,如socket中的socket error
342+
334343
等同于自定义的异常类;
335344

336345

337346
### assert语句
347+
338348
assert语句用于在程序中引入调试代码
349+
339350
assert 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

347360
assert语句相当于下面的代码:
361+
```python
348362
if __debug__:
349363
if not condition:
350364
raise AssertionError,<expression>
365+
```
351366

352367
assert实现: 手动触发异常;
353368
assert condition[,expression]

0 commit comments

Comments
 (0)