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 ...
随机推荐
- Spring注解(环境)
以数据库为例: 引入 c3p0数据源maven坐标 数据库驱动 @Configuration @PropertySource("classpath:/db.config.properties ...
- JS复制内容到剪贴板: 兼容IE、Firefox、Chrome、Safari所有浏览器【转】
正 文: 现在浏览器种类也越来越多,诸如 IE.Firefox.Chrome.Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了. 在FLASH 9 时代,有一个 ...
- eclipse——jsp字体设置
步骤如下
- 未来简史之数据主义(Dataism)
https://www.jianshu.com/p/8147239c9cb0?from=singlemessage junjguo 关注 2017.04.24 22:08* 字数 8116 阅读 31 ...
- python测试函数的使用时间
1. 使用装饰器来衡量函数执行时间 有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果:(代码通用3.x) import time from functools import wra ...
- spring3: AOP 之代理机制
Spring AOP通过代理模式实现,目前支持两种代理:JDK动态代理.CGLIB代理来创建AOP代理,Spring建议优先使用JDK动态代理. JDK动态代理:使用java.lang.reflect ...
- 5.6 WebDriver API实例讲解(41-50)
41.操作Web页面的滚动条 (1)滑动页面的滚动条到页面的最下面. (2)滑动页面的滚动条到页面的某个元素. (3)滑动页面的滚动条向下移动某个数量的像素. package apiSample; i ...
- APP埋点:页面统计与事件统计该如何入手?
我们平时所说的埋点,可以大致分为两部分,一部分是统计APP页面访问情况,即页面统计:另外一部分是统计APP内的操作行为,及自定义事件统计. 一.页面统计 页面统计,可以统计应用内各个页面的访问次数(P ...
- python多线程抓取代理服务器
文章转载自:https://blog.linuxeye.com/410.html 代理服务器:http://www.proxy.com.ru #coding: utf-8 import urllib2 ...
- Cassandra 的数据存储结构——本质是SortedMap<RowKey, SortedMap<ColumnKey, ColumnValue>>
Cassandra 的数据存储结构 Cassandra 的数据模型是基于列族(Column Family)的四维或五维模型.它借鉴了 Amazon 的 Dynamo 和 Google's BigTab ...