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 相关文章推荐
基于python的汉字转GBK码实现代码
Feb 19 Python
centos系统升级python 2.7.3
Jul 03 Python
跟老齐学Python之大话题小函数(1)
Oct 10 Python
讲解Python中的递归函数
Apr 27 Python
python算法演练_One Rule 算法(详解)
May 17 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
简单了解python的内存管理机制
Jul 08 Python
Django模板语言 Tags使用详解
Sep 09 Python
深入浅析python的第三方库pandas
Feb 13 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 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
laravel 5 实现模板主题功能
2015/03/02 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
Python实现远程调用MetaSploit的方法
2014/08/22 Python
详解Python中的正则表达式的用法
2015/04/09 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
python模拟实现分发扑克牌
2020/04/22 Python
Django crontab定时任务模块操作方法解析
2020/09/10 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
应届生新闻编辑求职信
2013/11/19 职场文书
小学新学期教师寄语
2014/01/18 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
个人委托书如何写
2014/09/25 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
2022漫威和DC电影上映作品
2022/04/05 欧美动漫
带你了解Java中的ForkJoin
2022/04/28 Java/Android