Python3 错误和异常(三)

简介: 笔记

4. 抛出异常

Python 使用 raise 语句抛出一个指定的异常。

raise 语法格式如下:

1.png2.png

以下实例如果 x 大于 5 就触发异常:

3.png

执行以上代码会触发异常:


4.png

raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。

如果你只想知道这是否抛出了一个异常,并不想去处理它,那么一个简单的 raise 语句就可以再次把它抛出。

5.png

An exception flew by!

Traceback (most recent call last):

File “”, line 2, in ?

NameError: HiThere


5. 用户自定义异常

你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承,例如:


6.png7.png

My exception occurred, value: 4

8.png

class InputError(Error):

“”"Exception raised for errors in the input.

9.png

class TransitionError(Error):

“”"Raised when an operation attempts a state transition that’s not

allowed.

0.png

… raise KeyboardInterrupt

… finally:

… print(‘Goodbye, world!’)

Goodbye, world!

Traceback (most recent call last):

File “”, line 2, in

KeyboardInterrupt


以上例子不管 try 子句里面有没有发生异常,finally 子句都会执行。


如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后被抛出。


下面是一个更加复杂的例子(在同一个 try 语句里包含 except 和 finally 子句):


11.png12.png

7. 预定义的清理行为

一些对象定义了标准的清理行为,无论系统是否成功的使用了它,一旦不需要它了,那么这个标准的清理行为就会执行。

这面这个例子展示了尝试打开一个文件,然后把内容打印到屏幕上:

13.png

以上这段代码的问题是,当执行完毕后,文件会保持打开状态,并没有被关闭。

关键词 with 语句就可以保证诸如文件之类的对象在使用完之后一定会正确的执行他的清理方法:

14.png15.png


目录
相关文章
|
1月前
|
网络协议 网络安全 Python
Python网络编程基础(Socket编程) 错误处理和异常
【4月更文挑战第10天】网络编程涉及到很多复杂的操作和潜在的风险,如连接失败、数据丢失、超时等问题。因此,正确的错误处理和异常捕获是确保网络程序稳定性和可靠性的关键。本章将介绍网络编程中常见的错误和异常,并探讨如何在Python中进行有效的错误处理。
|
2月前
|
开发者 UED Python
怎么理解python中的错误和异常
怎么理解python中的错误和异常
26 0
|
1天前
|
Python
【Python进阶(一)】——异常与错误
【Python进阶(一)】——异常与错误
|
3天前
|
Python Windows
python中的异常与模块
python中的异常与模块
9 1
|
6天前
|
监控 Python
Python中精通异常日志记录
Python中精通异常日志记录
10 0
|
12天前
|
机器学习/深度学习 算法 数据可视化
Python用KNN(K-近邻)回归、分类、异常值检测预测房价、最优K值选取、误差评估可视化
Python用KNN(K-近邻)回归、分类、异常值检测预测房价、最优K值选取、误差评估可视化
|
15天前
|
Python
【Python21天学习挑战赛】- 错误和异常
【Python21天学习挑战赛】- 错误和异常
|
18天前
|
Python
如何在Python中处理异常?给出try-except-finally语句的例子。
在Python中,异常处理通过try-except-finally结构实现。try包含可能抛出异常的代码,except捕获特定异常并处理,finally则确保无论是否发生异常,某些代码(如资源释放)总会执行。
6 1
|
27天前
|
数据库 Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(下)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)
49 0
|
27天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
60 0