IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 10_Python基础_Python异常处理 -> 正文阅读

[Python知识库]10_Python基础_Python异常处理

Python异常处理
?? ?
? ? 一、了解Python异常处理
?? ?? ? 在程序中为了增强健壮性,我们需要考虑异常处理方面的内容。比如在读取文件时要考虑文件不存在的情况,在做除法运算时要考虑除0的情况……。我们把这些可能产生的异常在程序中进行对应的处理保证程序不无故异常退出这就是异常处理。
?? ?? ? 做除法运算时的除0异常处理
?? ??? ?
?? ??? ??? ?
? ? 二、捕获程序中异常
?? ?? ? 就如上面的列子,我们不可以防止用户输入0,但是我们可以在产生这种情况后捕获到并处理异常,从而让程序不会因此而直接终止并退出。
?? ?? ? try-except语句
?? ??? ?? ? 通过try-except语句可以实现对异常的捕获,其语法结构如下:
try:
? ? 可能产生异常的语句
except [异常类型]:
? ? 处理异常
?? ?? ? 结构说明:
?? ??? ?? ? 1、try后要有英文半角冒号
?? ??? ?? ? 2、可能产生异常的语句,处理异常前都要做缩进处理(Python中推进使用4个半角空格)
?? ??? ?? ? 3、异常类型那个声明是可以省略的
?? ?
# coding=utf-8
i = input("请输入数字:")
n = 100
try:
????result = n / int(i)
????print(result)
????print("{0}除以{1}等于{2}".format(n,i,result))
except Exception as??e:
????print("不可以除以0,异常:{}".format(e))
上面except后的Exception也可以替换为ZerDivisionError,因为实际上除0产生的异常类型就是ZerDivisionError。
? ? 多个except代码块
?? ?? ? 多条语句可能会产生多种不同的异常,对于每一种异常都会采用不同的处理方式,对于这个情况可以在try后跟多个except代码块
# coding=utf-8
i = input("请输入数字:")
n = 100
try:
????result = n / int(i)
????print(result)
????print("{0}除以{1}等于{2}".format(n,i,result))
except ZeroDivisionError as e1:
????print("产生异常:{}".format(e1))
except ValueError as??e2:
????print("产生异常:{}".format(e2))
? ? 这里分别捕获两个不同的异常:ZeroDivisionError、ValueError
? ? 多重异常捕获
?? ?? ? 像上面一样如果我们要对多种异常做捕获,而多种异常的处理方式又是相同的,则可以在一个except中写入多个指定的异常
# coding=utf-8
i = input("请输入数字:")
n = 100
try:
????result = n / int(i)
????print(result)
????print("{0}除以{1}等于{2}".format(n,i,result))
except (ZeroDivisionError,ValueError) as ex:
????print("产生异常:{}".format(ex))
? ? try-except语句嵌套
# coding=utf-8
i = input("请输入数字:")
n = 100
try:
????i1 = int(i) #?这里可能产生异常,由外层的try捕获 ValueError
????try:
????????result = n / i1? ? #?这里可能产生异常,由里层的try捕获?ZeroDivisionError
????????print("{0}除以{1}等于{2}".format(n,i,result))
????except ZeroDivisionError as e1:
????????print("产生异常:{}".format(e1))
except ValueError as e:
????print("产生异常:{}".format(e))
? ? 三、finally代码块
?? ?? ? 有时候在try-except语句中会占用一些资源,如打开文件,网络连接、打开数据库及数据结果集……都会占用计算机资源,这些资源的占用都需要开发人员去释放,为了确保这些资源能被释放掉可以使用finally代码块,因为不管是否发生异常,finally代码块的语句都会执行到。
?? ?? ? try-except语句后面可以跟一个finally代码块,其语法如下:
try:
? ? 可能发生异常的语句
except?异常类型1:
? ? 处理异常
except?异常类型2:
? ? 处理异常
……
except:
? ? 处理异常
finally:
? ? 释放资源
?? ?? ??? ? 自定义异常类
?? ??? ??? ?? ? 自定义异常类,需要继承Exception类或其子类,前面我们说的ValueError和ZeroDivisionError都是属于Exception的子类。
?? ?? ??
# coding=utf-8
class MyException(Exception):
????def __init__(self,message):
????????super().__init__(message)
i = input("请输入数字:")
n = 100
def chu(n,i):
????if i > n:
????????raise MyException("除数大于被除数了!") # 手动触发一个异常?使用?raise
????else:
????????return n / i
try:
????result = chu(n,int(i))
????print("{0}除以{1}的结果是{2}".format(n,i,result))
except ZeroDivisionError as e:
????print("发生异常,{}".format(e))
except ValueError as e1:
????print("发生异常,{}".format(e1))
except MyException as e2:
????print("发生异常,{}".format(e2))
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:13:47  更:2021-09-13 09:15:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:58:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码