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读写excel的方法
Nov 18 Python
python基于右递归解决八皇后问题的方法
May 25 Python
Python中的fileinput模块的简单实用示例
Jul 09 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
python如何让类支持比较运算
Mar 20 Python
详解python执行shell脚本创建用户及相关操作
Apr 11 Python
Python上下文管理器用法及实例解析
Nov 11 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
记录一下scrapy中settings的一些配置小结
Sep 28 Python
jupyter notebook远程访问不了的问题解决方法
Jan 11 Python
python实现批量移动文件
Apr 05 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
URL Rewrite的设置方法
2007/01/02 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
python实现的系统实用log类实例
2015/06/30 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
如何验证python安装成功
2020/07/06 Python
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
初一生物教学反思
2014/01/18 职场文书
护士节策划方案
2014/05/19 职场文书
单位委托书
2014/10/15 职场文书
学校师德师风整改措施
2014/10/27 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
2015年暑假工作总结
2015/07/13 职场文书
上班旷工检讨书
2015/08/15 职场文书
2016春季运动会前导词
2015/11/25 职场文书