Python用Try语句捕获异常的实例方法


Posted in Python onJune 26, 2019

python的异常,以及用try复合语句处理异常。

运行代码时有时会出现各种各样的错误,致使解析器中断执行,并提示xxxxxxErorr的提示,后面跟具体的错误的描述,这被称为是引发了异常。

其实异常告诉我们的是遇到了什么类型的错误。xxxxErorr就是python内置的异常类型。每一种异常类型,都有它自己的错误信息。

Python用Try语句捕获异常的实例方法

有一种比较容易辨识,容易处理的错误,语法错误:SyntaxError

是由于写代码时的语法错误,大部分的解析器都会提前提示,像pycharm,在书写时如果语法错误,都会有波浪线提示。语法上的错误很好处理,类似与写文章写错字了,改正就行了。

Python用Try语句捕获异常的实例方法

如何处理异常:

除了语法错误能轻松搞定,其他有些异常类型不影响代码的功能,而又不想让异常中断执行时,就要对异常进行处理,而不让他中断程序:

例如:有一个字典personDetail={"name":“光头强”}里边是光头强的资料,想取到它的资料,但具体都有什么资料我们不知道,如果输入的键不存在就会引发异常而中断执行。致使后面的代码也为无法执行。

Python用Try语句捕获异常的实例方法

那么就要捕获这些异常,绕过它,能让下面的代码继续运行。python提供了try语句来实现这些功能。

语法:

try:
可能发生异常的代码
except 异常类型:
捕获的异常后要执行的代码

try 语句的工作原理如下。

1)执行 try 子句时如果没有异常发生,则跳过 except 子句并完成 try 语句的执行。

2)如果在执行try 子句时发生了异常,则跳至except子句。

3)执行 except 子句 ,如果引发异常的类型和 except 关键字后面的异常匹配,就是捕获了异常,执行except子句。

例如:

gtqDict={"Name":"光头强","Age":34,"Gender":"男"
try:
 print(gtqDict["Weight"])
except KeyError:
 print("Weight不存在,继续走"
print(gtqDict["Age"])
print(gtqDict["Gender"])

 

例子不管weight是否存在,都能使得程序完。

Python用Try语句捕获异常的实例方法

捕获多个异常

有时不确定会发生哪种异常,就把异常类型以元组的形式组包统统放在except后面,来匹配可能发生的异常:

比如:要打印光头强年龄的Age键,不确定这个键是否存在,就用KeyErorr,不确定会不会发生键名是否正确,就用NameErorr。

例如:

gtqDict={"Name":"光头强","Age":34,"Gender":"男"
try:
 print(gtqDict["age"])
except (KeyError,KeyError):
 print("age错误"
print(gtqDict["Name"])
print(gtqDict["Gender"])

 

Python用Try语句捕获异常的实例方法

捕获异常的描述信息:可以将异常的具体描述打印出来,以供参考。

try:可能发生异常的代码

except (KeyError,KeyError) as 信息变量:

print(信息变量)

例如:

gtqDict={"Name":"光头强","Age":34,"Gender":"男"}
try:
 print(gtqDict["Weight"])
except (KeyError,KeyError) as e:
 print(type(e),e)
print(gtqDict["Name"])
print(gtqDict["Gender"])

Python用Try语句捕获异常的实例方法

捕获所有异常

前面提过,引发异常的xxxxErorr都是python异常的类型。python中所有异常类型都是基类Exception的派生类。

那么在写代码的时候不用指定异常的具体类型,只要捕获基类就等于捕获了所有的异常,但输出的是具体的异常信息,这很有利于在大范围内找到具体的错误。

语法:

try:可能发生异常的代码

except Excepthon as 信息变量:

print(信息变量)

例如:

gtq="光头强"
try:
 print(name)
except Exception as e:
 print(type(e),e
print("gtq")

---<class 'NameError'> name 'name' is not defined

---gtq

Python用Try语句捕获异常的实例方法

异常里的else子句

else子句是可选的,如果使用,必须放在所有的except子句之后。

它是在try子句没有发生异常的情况执行。

例如:

gtq="光头强"
try:
 name=gtq
except Exception as e:
 print(type(e),e)
else:
 print("%s是一个伐木工人"%name)

Python用Try语句捕获异常的实例方法

finally子句: 写在try语句的最后。

不管 try 子句里面是否有异常,finally 子句都会执行。

例如:

gtq="光头强"
try:
 name=GTQ
except Exception as e:
 print(type(e),e)
else:
 print("%s是一个伐木工人"%name)
finally:
 print("调用资料结束")

---<class 'NameError'> name 'GTQ' is not defined

---调用资料结束

Python用Try语句捕获异常的实例方法

Python 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
Django中使用group_by的方法
May 26 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 Python
python随机数分布random测试
Aug 27 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
Python 转移文件至云对象存储的方法
Feb 07 Python
python调用自定义函数的实例操作
Jun 26 #Python
python读取并定位excel数据坐标系详解
Jun 26 #Python
python分数表示方式和写法
Jun 26 #Python
python字符串替换第一个字符串的方法
Jun 26 #Python
python频繁写入文件时提速的方法
Jun 26 #Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 #Python
使用python的pandas为你的股票绘制趋势图
Jun 26 #Python
You might like
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
python聊天程序实例代码分享
2013/11/18 Python
python3.3实现乘法表示例
2014/02/07 Python
python统计cpu利用率的方法
2015/06/02 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
python如何爬取网页中的文字
2020/07/28 Python
Python logging模块handlers用法详解
2020/08/14 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
优秀毕业生自荐信
2014/06/10 职场文书
顶岗实习协议书
2015/01/29 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js