Python学习之异常处理
1.首先了解错误和异常的概念:
错误:代码运行前的代码错误或者是程序执行过程中的逻辑错误
1:语法错误:代码不符合解释器或者编译器语法(代码错误)
2:逻辑错误:不完整或者不合法输入或者计算出现问题(输入时或者计算时,比如除零操作等)
异常:执行过程中出现问题导致程序无法继续执行
1:程序遇到逻辑或者算法问题(代码错误导致程序无法正确的执行)
2:运行过程中计算机错误(内存不够或者IO错误)(硬件环境出现问题)
2.错误和异常的区别:
错误中的语法错误会在解释器或编译发现的,但是逻辑错误是无法通过解释其或编译器来预判的,而在程序执行的过程中,如果出现错误,编译器或解释器检查到错误就认为是异常,则会抛出异常;而异常的处理有截获、忽略、终止程序,一般如果我们没有人为的对异常进行截获的话,异常就会终止程序的运行
3.Python常见的错误:
1、NameError 变量没定义就使用
2、SyntaxError 语法错误
3、IOError 打开一个不存在的目录或文件
4.ZeroDivisionError 10/0 除数为0了 逻辑错误
5.a=int('dd') :ValueError 传入值无效
6.KeyboardInterrupt 强制终止程序产生,比如按下Ctrl+C
7.IndentionError:缩进问题
4.工作原理
1.首先执行try中的语句
2.如果没有发生异常,则忽略except,执行完try的语句
3.如果发生ic行,那么会暂时或略try中发生异常后的语句,如果发生异常的类型与except后的名称相符,则执行except后的语句,然后再执行try中未执行的语句。
4.如果发生异常,但无任何except匹配,、那么这个异常就会往上传递给上层的try,直到找不到就会停止程序的执行。
5.常用的几种方式:
1.try .... finally
try:
pass
finally:
#如果没有捕获到异常,该代码库执行
#如果捕获到异常,先执行这个,再给解释器处理异常
#总之,如何都要执行这里面的语句
2.try ... except ... finally
try:
pass
except:
#异常处理
finally:
#必须要做的事 #1)如果没有捕获到异常,执行完try后就执行finally
#2)如果捕获到异常,try=》except=》try中未执行完的语句=》finally
#3)else与finally的区别是,else是没有捕获到异常时才执行的,而finally是不管怎样都会执行的
3.try .... except ... else
try:
pass
except:
#异常处理
else:
#未捕获到异常时要执行的语句
traceback相关:
python中用于处理异常栈的模块是traceback模块,它提供了print_exception、format_exception等输出异常栈等常用的工具函数。
其实traceback.print_exc()函数只是traceback.print_exception()函数的一个简写形式,traceback.format_exc()函数是traceback.format_exception()的一个简写形式。而它们获取异常相关的数据都是通过sys.exc_info()函数得到的。
sys.exc_info()返回的值是一个元组,分别是,exc_type是异常的对象类型,exc_value是异常的值,exc_tb是一个traceback对象,对象中包含出错的行数、位置等数据。然后通过print_exception函数对这些异常数据进行整理输出
def func(a, b):
return a / b
if __name__ == '__main__':
import sys
import traceback
try:
func(1, 0)
except Exception as e:
print "print_exception()"
exc_type, exc_value, exc_tb = sys.exc_info()
print 'the exc type is:', exc_type
print 'the exc value is:', exc_value
print 'the exc tb is:', exc_tb
traceback.print_exception(exc_type, exc_value, exc_tb)
Python学习之异常处理的更多相关文章
- 4月18日 python学习总结 异常处理、网络编程
一. 异常 1.什么是异常 异常是错误发生的信号,程序一旦出错,如果程序中还没有相应的处理机制 那么该错误就会产生一个异常抛出来,程序的运行也随之终止 2.一个异常分为三部分: 1.异常的追踪信息 2 ...
- Python学习之--异常处理
Python中的Exceptions是所有异常的基类,内置的异常类都放在了exceptions模块中,通过dir()函数可以看到这些内置的类 通过raise 语句触发异常,如 >>> ...
- Python学习 :异常处理
异常处理 什么是异常处理 - python解释器检测到错误,触发异常(也允许程序员自己触发了异常) - 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,只与异常处理有关) - 如果 ...
- Python学习--12 异常处理、调试
异常捕获 语法格式: try: pass except xxx as e: pass except xxx as e: pass ... else: pass finally: pass except ...
- python学习总结----异常处理
相关概念 - 错误:程序运行之前的语法错误,如:关键字.缩进不齐.括号不成对. - 异常:在程序运行过程中出现的问题,如:除数为0.对象属性不存在等. 异常处理 - 说明:异常处理可以理解为特殊的流程 ...
- Python学习笔记(异常处理)
用户输入了一个不合规定的值,或者需要打开的文件不存在.这些情况被称作“异常”,一个好的程序需要能处理可能发生的异常,避免程序因此而中断. 例如我们去打开一个文件: f = file('non-exis ...
- python学习之----异常处理小示例
网络是十分复杂的.网页数据格式不友好,网站服务器宕机,目标数据的标签找不到,都 是很麻烦的事情.网络数据采集最痛苦的遭遇之一,就是爬虫运行的时候你洗洗睡了,梦 想着明天一早数据就都会采集好放在数据库里 ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- Python学习系列(九)(IO与异常处理)
Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Pytho ...
随机推荐
- C++ vector 多次删除第一个元素
转载声明: 代码都是来源于一下连接,做了一点点修改,为了记忆方便,故贴在这里,原文链接:http://blog.csdn.net/doctor_feng/article/details/1188078 ...
- 详细Http状态查询
状态代码 状态信息 含义 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分.(HTTP 1.1新) 101 Switching Protocols 服务器将遵从客户的请求转 ...
- Bellman-Ford算法 - 有向图单源最短路径
2017-07-27 08:58:08 writer:pprp 参考书目:张新华的<算法竞赛宝典> Bellman-Ford算法是求有向图单源最短路径的,dijkstra算法的条件是图中 ...
- html5 如何打包成apk,将H5封装成android应用APK文件的几种方法
直接使用编程软件提供的方法: 1.需要下载安装MyEclipse2014,Android SDK,eclipse(需配置Android开发环境) Java和Android环境安装与配置. 2.打开My ...
- PL/SQL通过修改配置文件的方式实现数据库的连接
http://jingyan.baidu.com/article/c74d600080632a0f6a595d80.html
- Android中SQLite介绍
现在的主流移动设备像Android.iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上 ...
- New Concept English three (36)
21 54 We are less credulous than we used to be. In the nineteenth century, a novelist would bring hi ...
- 网站 安全 ---- 常见的 web 攻击
网站 安全 ---- 常见的 web 攻击 1 sql 注入(常用的攻击性)(django的orm是做过sql防护处理的) 危害: 非法读取,篡改,删除数据库中的数据 盗取用户的各类敏感信息.获取利益 ...
- [置顶]
Android 关于BottomDialogSheet 与Layout擦出爱的火花?
今天上班做那个类似于ios拍照的那种效果图 就是个垂直布局然后里面textview+分割线+textview+button 当然也可以用button+分割线+button 方法有很多,选择适合自己的就 ...
- Python 安装 pip package
Python的 package 站点提供的msi安装越来越少了,如今大多是.whl或.tar.gz格式.对某些用windows的小白(比如,我)来说,对.tar.gz闻所未闻,也纠结了很长时间.whl ...