Python异常对象Exception基础类异常捕捉
作者:jiangwei0512 时间:2021-10-21 03:46:25
异常对象
Python中遇到错误后,会引发异常。
Python中使用异常对象来表示异常情况。
如果异常对象未被处理或者捕捉,程序就会用所谓的回溯(traceback)来终止执行。
下面是一个例子:
def func1():
raise Exception
if __name__ == "__main__":
func1()
执行之后报错:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-2.py
Traceback (most recent call last):
File "E:\Codes\python_everything\begining-python\src\08\list8-2.py", line 19, in <module>
func1()
File "E:\Codes\python_everything\begining-python\src\08\list8-2.py", line 15, in func1
raise Exception
Exception
异常有不同的类型,Exception是基础类,下面还有各种子类:
+-- Exception
+-- StopIteration
+-- StandardError
| +-- BufferError
| +-- ArithmeticError
| | +-- FloatingPointError
| | +-- OverflowError
| | +-- ZeroDivisionError
| +-- AssertionError
| +-- AttributeError
| +-- EnvironmentError
| | +-- IOError
| | +-- OSError
| | +-- WindowsError (Windows)
| | +-- VMSError (VMS)
| +-- EOFError
| +-- ImportError
| +-- LookupError
| | +-- IndexError
| | +-- KeyError
| +-- MemoryError
| +-- NameError
| | +-- UnboundLocalError
| +-- ReferenceError
| +-- RuntimeError
| | +-- NotImplementedError
| +-- SyntaxError
| | +-- IndentationError
| | +-- TabError
| +-- SystemError
| +-- TypeError
| +-- ValueError
| +-- UnicodeError
| +-- UnicodeDecodeError
| +-- UnicodeEncodeError
| +-- UnicodeTranslateError
还可以通过继承Exception来实现自己的类:
class SomeError(Exception): pass
def func2():
raise SomeError
if __name__ == "__main__":
func2()
异常捕捉
异常可以被捕捉,需要使用try...except...语句:
class SomeError(Exception): pass
def func2():
raise SomeError
if __name__ == "__main__":
try:
func2()
except SomeError:
print("Some error happened")
这里捕捉到了参数,所以就不会回溯:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-3.py
Some error happened
但是如果是其它的异常:
def func1():
raise Exception
class SomeError(Exception): pass
def func2():
raise SomeError
if __name__ == "__main__":
try:
func1()
except SomeError:
print("Some error happened")
这里的Exception就没有被捕获,所以还是会回溯:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-3.py
Traceback (most recent call last):
File "E:\Codes\python_everything\begining-python\src\08\list8-3.py", line 27, in <module>
func1()
File "E:\Codes\python_everything\begining-python\src\08\list8-3.py", line 15, in func1
raise Exception
Exception
如果没有出现异常,则会继续往下执行,但是这里可以有else语句来执行没有异常时可以执行的语句,使整个逻辑更通顺:
if __name__ == "__main__":
try:
print("No exception")
except SomeError:
print("Some error happened")
else:
print("No error happened")
结果如下:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-3.py
No exception
No error happened
但是有时即使发生了无法捕捉的异常,也想要执行一些语句,这个时候就可以使用finally语句:
def func1():
raise Exception
class SomeError(Exception): pass
def func2():
raise SomeError
if __name__ == "__main__":
try:
func1()
except SomeError:
print("Some error happened")
else:
print("No error happened")
finally:
print("Do something")
Python中更倾向于使用try...except...这样的语句来代替if...else..语句。
来源:https://blog.csdn.net/jiangwei0512/article/details/106596297
标签:Python,异常捕捉,对象,Exception类
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python多线程编程(八):使用Event实现线程间通信
2023-05-07 15:25:50
详解Django中的ifequal和ifnotequal标签使用
2023-06-24 05:07:04
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2021-12-24 13:28:27
![](https://img.aspxhome.com/file/2023/0/97720_0s.jpg)
python3实现磁盘空间监控
2023-07-09 14:12:49
python 爬取腾讯视频评论的实现步骤
2021-06-19 03:57:58
![](https://img.aspxhome.com/file/2023/3/90343_0s.png)
Python图像处理之图像金字塔详解
2022-03-11 10:35:04
![](https://img.aspxhome.com/file/2023/2/107512_0s.png)
jupyter 使用Pillow包显示图像时inline显示方式
2021-09-08 00:42:02
![](https://img.aspxhome.com/file/2023/8/110398_0s.jpg)
Python下singleton模式的实现方法
2022-10-03 12:15:02
python实现UDP协议下的文件传输
2023-10-10 10:26:20
![](https://img.aspxhome.com/file/2023/2/112112_0s.jpg)
Python 编程语言详细介绍
2022-08-21 08:39:27
![](https://img.aspxhome.com/file/2023/1/92121_0s.jpg)
LyScript实现计算片段Hash并写出Excel的示例代码
2021-11-20 18:41:45
![](https://img.aspxhome.com/file/2023/6/91826_0s.png)
用于WebKit的CSS诀窍[译]
2009-03-11 20:03:00
![](https://img.aspxhome.com/file/UploadPic/20093/11/01-94s.jpg)
python文件处理笔记之文本文件
2022-10-30 22:38:32
![](https://img.aspxhome.com/file/2023/1/93841_0s.png)
[翻译]标记语言和样式手册 chapter 5 表单
2008-01-23 17:20:00
![](https://img.aspxhome.com/file/UploadPic/20081/23/2008123183735445s.jpg)
python实现爬虫统计学校BBS男女比例之数据处理(三)
2022-12-11 18:56:45
![](https://img.aspxhome.com/file/2023/1/75981_0s.jpg)
PHP邮件发送类PHPMailer用法实例详解
2023-11-19 16:31:17
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2022-03-31 17:26:15
Python子类继承父类构造函数详解
2023-02-27 09:13:03
python3 求约数的实例
2023-12-29 03:18:59
Linux下为不同版本python安装第三方库
2023-11-12 05:04:35