Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
后端镜像
Python Guide
提交
8defbf77
P
Python Guide
项目概览
后端镜像
/
Python Guide
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Python Guide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8defbf77
编写于
12月 11, 2020
作者:
写代码的明哥
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
f7df5ba8
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
74 addition
and
20 deletion
+74
-20
source/c06/c06_02.md
source/c06/c06_02.md
+26
-6
source/c06/c06_02.rst
source/c06/c06_02.rst
+27
-6
source/c06/c06_03.md
source/c06/c06_03.md
+10
-3
source/c06/c06_03.rst
source/c06/c06_03.rst
+11
-5
未找到文件。
source/c06/c06_02.md
浏览文件 @
8defbf77
...
...
@@ -19,16 +19,36 @@ def demo_func(filename):
出现错误或者异常没有关系,关键在于你要学会预判程序可能会出现的错误或异常,然后在代码中捕获这些异常并处理。
异常的捕获
主要有三种方式
:
异常的捕获
的语法有如下两种
:
-
第一种:使用
`try ... except ...`
第一种:只捕捉但是不想获取异常信息
如果代码A发生了异常,则会走到代码B的逻辑
```
python
try
:
代码A
except
[
EXCEPTION
]:
代码B
```
第二种:不但捕捉了还要获取异常信息,赋值给 e 后,后面你可以把异常信息打印到日志中。
```
python
try
:
代码A
except
[
EXCEPTION
]
as
e
:
代码B
```
有了上面的基础语法,可以扩展出下面三种常用的异常捕获的写法。
-
第一种:正常使用
`try ... except ...`
如果代码A发生了异常,则会走到代码B的逻辑。
```
python
try
:
代码A
except
:
except
[
exception
]
as
e
:
代码B
```
...
...
@@ -52,7 +72,7 @@ integer division or modulo by zero
```
python
try
:
代码A
except
:
except
[
exception
]
as
e
:
代码B
else
:
代码C
...
...
@@ -96,7 +116,7 @@ integer division or modulo by zero
```
python
try
:
代码A
except
:
except
[
exception
]
as
e
:
代码B
finally
:
代码C
...
...
source/c06/c06_02.rst
浏览文件 @
8defbf77
...
...
@@ -26,17 +26,38 @@ Exception 通用异常。
出现错误或者异常没有关系,关键在于你要学会预判程序可能会出现的错误或异常,然后在代码中捕获这些异常并处理。
异常的捕获
主要有三种方式
:
异常的捕获
的语法有如下两种
:
- 第一种:使用 ``try ... except ...``
第一种:只捕捉但是不想获取异常信息
如果代码A发生了异常,则会走到代码B的逻辑
.. code:: python
try:
代码A
except [EXCEPTION]:
代码B
第二种:不但捕捉了还要获取异常信息,赋值给 e
后,后面你可以把异常信息打印到日志中。
.. code:: python
try:
代码A
except [EXCEPTION] as e:
代码B
有了上面的基础语法,可以扩展出下面三种常用的异常捕获的写法。
- 第一种:正常使用 ``try ... except ...``
如果代码A发生了异常,则会走到代码B的逻辑。
.. code:: python
try:
代码A
except:
except
[exception] as e
:
代码B
举个例子
...
...
@@ -59,7 +80,7 @@ Exception 通用异常。
try:
代码A
except:
except
[exception] as e
:
代码B
else:
代码C
...
...
@@ -102,7 +123,7 @@ Exception 通用异常。
try:
代码A
except:
except
[exception] as e
:
代码B
finally:
代码C
...
...
source/c06/c06_03.md
浏览文件 @
8defbf77
# 6.3 如何自定义异常
大多数情况下,内置的错误和异常已经够用了。
大多数情况下,内置的错误和异常已经够用了
,但是有时候你还是需要自定义一些异常
。
但是有时候你还是需要自定义一些异常。自定义异常应该继承
`Exception`
类,直接继承或者间接继承都可以,例如:
自定义异常,需要先知道
`类`
与
`继承`
的一些相关知识,但关于类的知识是在第七章,如果你是纯新手跟着本教程学习到这里,可先暂跳过本节内容,等学习了第七章后再回过头来。
自定义异常应该继承
`Exception`
类,直接继承或者间接继承都可以,例如:
```
python
class
MyExcept
(
Exception
):
...
...
@@ -11,11 +13,16 @@ class MyExcept(Exception):
def
__str__
(
self
):
return
self
.
message
```
异常的名字都以
`Error`
结尾,我们在为自定义异常命名的时候也需要遵守这一规范,就跟标准的异常命名一样。
定义完后,就可以使用
`raise`
关键字来抛出异常
```
python
try
:
raise
MyExcept
(
'我的异常!'
)
except
MyExcept
as
ex
:
print
(
ex
)
```
异常的名字都以
`Error`
结尾,我们在为自定义异常命名的时候也需要遵守这一规范,就跟标准的异常命名一样。
\ No newline at end of file
source/c06/c06_03.rst
浏览文件 @
8defbf77
6.3 如何自定义异常
==================
大多数情况下,内置的错误和异常已经够用了。
大多数情况下,内置的错误和异常已经够用了
,但是有时候你还是需要自定义一些异常
。
但是有时候你还是需要自定义一些异常。自定义异常应该继承 ``Exception``
类,直接继承或者间接继承都可以,例如:
自定义异常,需要先知道 ``类`` 与 ``继承``
的一些相关知识,但关于类的知识是在第七章,如果你是纯新手跟着本教程学习到这里,可先暂跳过本节内容,等学习了第七章后再回过头来。
自定义异常应该继承 ``Exception`` 类,直接继承或者间接继承都可以,例如:
.. code:: python
...
...
@@ -15,9 +17,13 @@
def __str__(self):
return self.message
异常的名字都以\ ``Error``\ 结尾,我们在为自定义异常命名的时候也需要遵守这一规范,就跟标准的异常命名一样。
定义完后,就可以使用 ``raise`` 关键字来抛出异常
.. code:: python
try:
raise MyExcept('我的异常!')
except MyExcept as ex:
print(ex)
异常的名字都以\ ``Error``\ 结尾,我们在为自定义异常命名的时候也需要遵守这一规范,就跟标准的异常命名一样。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录