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


目录
相关文章
|
4月前
|
Python
Python基础教程(第3版)中文版 第8章 异常(笔记)
Python基础教程(第3版)中文版 第8章 异常(笔记)
|
3月前
|
Unix API Python
【Python】已完美解决:(Python3.8异常)AttributeError: module ‘time‘ has no attribute ‘clock‘
【Python】已完美解决:(Python3.8异常)AttributeError: module ‘time‘ has no attribute ‘clock‘
82 0
|
11天前
|
设计模式 安全 JavaScript
Python学习八:面向对象编程(下):异常、私有等
这篇文章详细介绍了Python面向对象编程中的私有属性、私有方法、异常处理及动态添加属性和方法等关键概念。
14 1
|
27天前
|
人工智能 数据可视化 搜索推荐
Python异常模块与包
Python异常模块与包
|
18天前
|
开发者 索引 Python
Python常见的异常总结
Python 中的异常是一个非常广泛的主题,因为它包含许多内置的异常类型,这些类型可以处理各种运行时错误。
17 0
|
5月前
|
索引 Python
Python中的异常处理与自定义异常
Python中的异常处理与自定义异常
51 0
|
3月前
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
如何让Python爬虫在遇到异常时继续运行
|
2月前
|
API C++ Python
【Azure 应用服务】Python fastapi Function在Azure中遇见AttributeError异常(AttributeError: 'AsgiMiddleware' object has no attribute 'handle_async')
【Azure 应用服务】Python fastapi Function在Azure中遇见AttributeError异常(AttributeError: 'AsgiMiddleware' object has no attribute 'handle_async')
|
3月前
|
机器学习/深度学习 运维 监控
使用Python实现深度学习模型:智能安防监控与异常检测
【7月更文挑战第26天】 使用Python实现深度学习模型:智能安防监控与异常检测
57 6
|
2月前
|
存储 Python
Python 中的用户定义异常
【8月更文挑战第23天】
25 0