Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5958183

Browse files
committed
更新异常和工具
1 parent c4e266a commit 5958183

File tree

4 files changed

+53
-53
lines changed

4 files changed

+53
-53
lines changed

‎Learning Python/7、异常和工具/1. 异常基础.ipynb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# 异常的角色 \n",
7+
"# 1. 异常的角色 \n",
88
"在 Python 中,异常通常可用于各种用途:\n",
99
"- **错误处理。**每当在运行时检测到程序错误时,Python 就会引发异常。可以在程序代码中捕捉和响应错误,或者忽略已发生的异常。如果忽略错误,Python 默认的异常处理行为将启动:停止程序,打印出错消息。如果不想启动这种默认行为,就要写 try 语句来捕捉异常并从异常中恢复。\n",
1010
"- **事件通知。**异常也可用于发出有效状态的信号,而不需在程序间传递结果标志位,或者刻意对其进行测试。\n",
@@ -17,8 +17,8 @@
1717
"cell_type": "markdown",
1818
"metadata": {},
1919
"source": [
20-
"# 异常处理 \n",
21-
"## 默认异常处理器 \n",
20+
"# 2. 异常处理 \n",
21+
"## 2.1 默认异常处理器 \n",
2222
"当代码没有捕获异常时,它会一直向上返回到程序顶层,并启用默认的异常处理器,打印标准出错信息。"
2323
]
2424
},
@@ -52,7 +52,7 @@
5252
"cell_type": "markdown",
5353
"metadata": {},
5454
"source": [
55-
"## 捕获异常 \n",
55+
"## 2.2 捕获异常 \n",
5656
"如果不想要默认的异常行为,就需要把调用包装在 try 语句内,自行捕捉异常:"
5757
]
5858
},
@@ -112,7 +112,7 @@
112112
"cell_type": "markdown",
113113
"metadata": {},
114114
"source": [
115-
"## 引发异常 \n",
115+
"## 2.3 引发异常 \n",
116116
"异常能由 Python 或程序引发,也能捕捉或忽略。要手动触发异常,直接执行 raise 语句:"
117117
]
118118
},
@@ -141,7 +141,7 @@
141141
"cell_type": "markdown",
142142
"metadata": {},
143143
"source": [
144-
"## 用户定义的异常 \n",
144+
"## 2.4 用户定义的异常 \n",
145145
"用户定义的异常能够通过类编写,它继承自一个内置的异常类:通常这个类的名称叫做 Exception。基于类的异常允许脚本建立异常类型、继承行为以及附加状态信息:"
146146
]
147147
},
@@ -174,7 +174,7 @@
174174
"cell_type": "markdown",
175175
"metadata": {},
176176
"source": [
177-
"## 终止行为 \n",
177+
"## 2.5 终止行为 \n",
178178
"try 语句可以包含 finally 代码块,可以定义一定会在最后执行时的收尾行为,无论 try 代码块中是否发生了异常:"
179179
]
180180
},
@@ -215,7 +215,7 @@
215215
"name": "python",
216216
"nbconvert_exporter": "python",
217217
"pygments_lexer": "ipython3",
218-
"version": "3.6.5"
218+
"version": "3.6.8"
219219
}
220220
},
221221
"nbformat": 4,

‎Learning Python/7、异常和工具/2. 异常编码细节.ipynb

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"cell_type": "markdown",
55
"metadata": {},
66
"source": [
7-
"# try/except/else 语句 \n",
7+
"# 1. try/except/else 语句 \n",
88
"try 是复合语句,它的最完整的形式如下:"
99
]
1010
},
@@ -32,12 +32,12 @@
3232
"cell_type": "markdown",
3333
"metadata": {},
3434
"source": [
35-
"## 语句的运行方式 \n",
35+
"## 1.1 语句的运行方式 \n",
3636
"- 如果 try 代码块语句执行时的确发生了异常,Python 就跳回 try,执行第一个符合引发异常的 except 子句下面的语句。当 except 代码块执行后,控制权就会到整个 try 语句后继续执行。\n",
3737
"- 如果异常发生在 try 代码块内,没有符合的 except 子句,异常就会向上传递到程序中的之前进入的 try 中,或者如果它是第一条这样的语句,就传递到这个进程的顶层,Python 会终止程序并打印默认出错消息。\n",
3838
"- 如果 try 首行底下执行的语句没有发生异常,Python 就会执行 else 行下的语句,控制权会在整个 try 语句下继续。\n",
3939
"\n",
40-
"## try 语句分句 \n",
40+
"## 1.2 try 语句分句 \n",
4141
"分句形式|说明\n",
4242
":---|:---\n",
4343
"except:|捕捉所有(其他)异常类型\n",
@@ -69,15 +69,15 @@
6969
"cell_type": "markdown",
7070
"metadata": {},
7171
"source": [
72-
"## try/else 分句 \n",
72+
"## 1.3 try/else 分句 \n",
7373
"没有 else,是无法知道控制流程是否已经通过了 try 语句,因为没有异常引发或者因为异常发生了且已被处理过。"
7474
]
7575
},
7676
{
7777
"cell_type": "markdown",
7878
"metadata": {},
7979
"source": [
80-
"# try/finally 语句 \n",
80+
"# 2. try/finally 语句 \n",
8181
"- 如果 try 代码块运行时没有异常发生,Python 会跳至执行 finally 代码块,然后在整个 try 语句后继续执行下去。\n",
8282
"- 如果 try 代码块运行时有异常发生,Python 依然会回来运行 finally 代码块,但是接着会把异常向上传递到较高的 try 语句或顶层默认处理器。程序不会在 try 语句下继续运行。\n",
8383
"\n",
@@ -88,7 +88,7 @@
8888
"cell_type": "markdown",
8989
"metadata": {},
9090
"source": [
91-
"# 统一 try/except/finally 语句 \n",
91+
"# 3. 统一 try/except/finally 语句 \n",
9292
"```\n",
9393
"try:\n",
9494
" main-action\n",
@@ -105,7 +105,7 @@
105105
"\n",
106106
"即使异常处理器或者 else-block 内有错误发生而引发了新的异常,finally-block 内的程序代码依然会执行。 \n",
107107
"\n",
108-
"## 统一 try 语句语法 \n",
108+
"## 3.1 统一 try 语句语法 \n",
109109
"方括号表示可选,星号表示0个或多个:\n",
110110
"```\n",
111111
"# format1\n",
@@ -134,10 +134,10 @@
134134
"cell_type": "markdown",
135135
"metadata": {},
136136
"source": [
137-
"# raise 语句 \n",
137+
"# 4. raise 语句 \n",
138138
"要显式地触发异常,可以使用 raise 语句。raise 关键字,后面跟着可选的要引发的类或者类的一个实例。 \n",
139139
"\n",
140-
"## 引发异常 \n",
140+
"## 4.1 引发异常 \n",
141141
"对于内置异常,如下两种形式是对等的,都会引发指定的异常类的一个实例,但是第一种形式隐式地创建实例:"
142142
]
143143
},
@@ -210,7 +210,7 @@
210210
"\n",
211211
"一旦异常在程序中某处由一条 except 子句捕获,它就死掉了,除非由另一个 raise 语句或错误重新引发它。 \n",
212212
"\n",
213-
"## 利用 raise 传递异常 \n",
213+
"## 4.2 利用 raise 传递异常 \n",
214214
"raise 语句不包括异常名称或额外数据值时,就是重新引发当前异常。如果需要捕捉和处理一个异常,又不希望异常在程序代码中死掉,一般就会使用这种形式:"
215215
]
216216
},
@@ -257,7 +257,7 @@
257257
"cell_type": "markdown",
258258
"metadata": {},
259259
"source": [
260-
"## Python 3.X 异常链:raise from \n",
260+
"## 4.3 Python 3.X 异常链:raise from \n",
261261
"Python 3.X 允许 raise 语句拥有一个可选的 from 子句:\n",
262262
"```\n",
263263
"raise exception from otherexception\n",
@@ -297,14 +297,14 @@
297297
"cell_type": "markdown",
298298
"metadata": {},
299299
"source": [
300-
"# assert 语句 \n",
300+
"# 5. assert 语句 \n",
301301
"assert 语句是 raise 常见使用模式的语法简写,assert 可视为条件式的 raise 语句:\n",
302302
"```\n",
303303
"assert <test>, <data>\n",
304304
"```\n",
305305
"如果 test 计算为假,Python 就会引发异常:data 项(如果提供了的话)是异常的额外数据。 \n",
306306
"\n",
307-
"## 例子:收集约束条件(但不是错误) \n",
307+
"## 5.1 例子:收集约束条件(但不是错误) \n",
308308
"assert 语句通常用于验证开发期间程序的状况。显示时,其出错消息正文会自动包括源代码的行信息,以及列在 assert 语句中的值:"
309309
]
310310
},
@@ -371,25 +371,25 @@
371371
"cell_type": "markdown",
372372
"metadata": {},
373373
"source": [
374-
"# with/as 环境管理器 \n",
374+
"# 6. with/as 环境管理器 \n",
375375
"with/as 语句是作为常见 try/finally 用法模式的替代方案。with 语句支持更丰富的基于对象的协议,可为代码块定义支持进入和离开的动作。 \n",
376376
"\n",
377-
"## 基本使用 \n",
377+
"## 6.1 基本使用 \n",
378378
"```\n",
379379
"with expression [as variable]:\n",
380380
" with-block\n",
381381
"```\n",
382382
"expression 要返回一个对象,此对象也可返回一个值,赋值给变量名 variable。 \n",
383383
"\n",
384-
"## 环境管理协议 \n",
384+
"## 6.2 环境管理协议 \n",
385385
"with 语句实际工作方式:\n",
386386
"1. 计算表达式,所得到的对象称为环境管理器,它必须有 `__enter__` 和 `__exit__` 方法。\n",
387387
"2. 环境管理器的 `__enter__` 方法会被调用。如果 as 子句存在,其返回值会赋值给 As 子句中的变量,否则,直接丢弃。\n",
388388
"3. 代码块中嵌套的代码会执行。\n",
389389
"4. 如果 with 代码块引发异常,`__exit__`(type, value, traceback) 方法就会被调用。这些也是由 sys.exc_info 返回的相同值。如果此方法返回值为假,则异常会重新引发。否则,异常会终止。正常情况下异常是应该被重新引发,这样的话才能传递到 with 语句之外。\n",
390390
"5. 如果 with 代码块没有引发异常,`__exit__` 方法依然会被调用,其 type、value 以及 traceback 参数都会以 None 传递。 \n",
391391
"\n",
392-
"## 多环境管理器 \n",
392+
"## 6.3 多环境管理器 \n",
393393
"with 语句可以使用新的逗号语法指定多个环境管理器:"
394394
]
395395
},
@@ -422,7 +422,7 @@
422422
"name": "python",
423423
"nbconvert_exporter": "python",
424424
"pygments_lexer": "ipython3",
425-
"version": "3.6.5"
425+
"version": "3.6.8"
426426
}
427427
},
428428
"nbformat": 4,

‎Learning Python/7、异常和工具/3. 异常对象.ipynb

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
"- **它们附加了状态信息。**\n",
1010
"- **它们支持继承。**\n",
1111
"\n",
12-
"# 异常:回到未来 \n",
13-
"## 编写异常类 "
12+
"# 1. 异常:回到未来 \n",
13+
"## 1.1 编写异常类 "
1414
]
1515
},
1616
{
@@ -57,22 +57,22 @@
5757
"cell_type": "markdown",
5858
"metadata": {},
5959
"source": [
60-
"# 为什么使用类异常 \n",
60+
"# 2. 为什么使用类异常 \n",
6161
"把库的异常安排到类树中,有个共同的超类来包装整个类型。这样,用户只需列出共同的超类,来捕捉库的所有异常。"
6262
]
6363
},
6464
{
6565
"cell_type": "markdown",
6666
"metadata": {},
6767
"source": [
68-
"# 内置 Exception 类 \n",
68+
"# 3. 内置 Exception 类 \n",
6969
"Python 把内置异常组织成层次,来支持各种捕捉模式。 \n",
7070
"**BaseException。**异常的顶级根类。这个类不能当作是由用户定义的类直接继承的(使用 Exception)。它提供了子类所继承的默认的打印和状态保持行为。 \n",
7171
"**Exception。**与应用相关的异常的顶层根超类。是所有其他内置异常的超类,除了系统推出事件类之外。 \n",
7272
"**ArithmeticError。**所有数值错误的超类。 \n",
7373
"**OverflowError。**识别特定的数值错误的子类。 \n",
7474
"\n",
75-
"## 默认打印和状态 \n",
75+
"## 3.1 默认打印和状态 \n",
7676
"内置异常还提供了默认打印显示和状态保持。传递给这些类的任何构造函数参数都会保存在实例的 args 元组属性中,并且当打印该实例的时候自动显示,对于用户定义的异常也是如此:"
7777
]
7878
},
@@ -143,7 +143,7 @@
143143
"cell_type": "markdown",
144144
"metadata": {},
145145
"source": [
146-
"# 定制打印显示 \n",
146+
"# 4. 定制打印显示 \n",
147147
"可以在类中定义两个字符串表示重载方法中的一个(`__repr__` 或 `__str__`),来返回想要为异常显示的字符串:"
148148
]
149149
},
@@ -196,8 +196,8 @@
196196
"cell_type": "markdown",
197197
"metadata": {},
198198
"source": [
199-
"# 定制数据和行为 \n",
200-
"## 提供异常细节 \n",
199+
"# 5. 定制数据和行为 \n",
200+
"## 5.1 提供异常细节 \n",
201201
"当引发一个异常的时候,可能会跨越任意的文件界限——触发异常的 raise 语句和捕获异常的 try 语句可能位于完全不同的模块文件中。在异常自身中传递额外的状态信息,这允许 try 语句更可靠地访问它。 "
202202
]
203203
},
@@ -233,7 +233,7 @@
233233
"cell_type": "markdown",
234234
"metadata": {},
235235
"source": [
236-
"## 提供异常方法 \n",
236+
"## 5.2 提供异常方法 \n",
237237
"异常类也可以定义在处理器中调用的方法:"
238238
]
239239
},
@@ -281,7 +281,7 @@
281281
"name": "python",
282282
"nbconvert_exporter": "python",
283283
"pygments_lexer": "ipython3",
284-
"version": "3.6.5"
284+
"version": "3.6.8"
285285
}
286286
},
287287
"nbformat": 4,

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /