1.首先了解错误和异常的概念:

  1. 错误:代码运行前的代码错误或者是程序执行过程中的逻辑错误
  2. 1:语法错误:代码不符合解释器或者编译器语法(代码错误)
  3. 2:逻辑错误:不完整或者不合法输入或者计算出现问题(输入时或者计算时,比如除零操作等)
  4. 异常:执行过程中出现问题导致程序无法继续执行
  5. 1:程序遇到逻辑或者算法问题(代码错误导致程序无法正确的执行)
  6. 2:运行过程中计算机错误(内存不够或者IO错误)(硬件环境出现问题)

2.错误和异常的区别:

  错误中的语法错误会在解释器或编译发现的,但是逻辑错误是无法通过解释其或编译器来预判的,而在程序执行的过程中,如果出现错误,编译器或解释器检查到错误就认为是异常,则会抛出异常;而异常的处理有截获、忽略、终止程序,一般如果我们没有人为的对异常进行截获的话,异常就会终止程序的运行

3.Python常见的错误:

  1. 1NameError 变量没定义就使用
  2. 2SyntaxError 语法错误
  3. 3IOError 打开一个不存在的目录或文件
  4. 4.ZeroDivisionError 10/0 除数为0 逻辑错误
  5. 5.a=int('dd') :ValueError 传入值无效
  6. 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

  1. try:
  2. pass
  3. finally:
  4. #如果没有捕获到异常,该代码库执行
  5. #如果捕获到异常,先执行这个,再给解释器处理异常
  6. #总之,如何都要执行这里面的语句

  2.try ... except ... finally

  1. try:
  2. pass
  3. except:
  4. #异常处理
  5. finally:
  6. #必须要做的事
  7.  
  8. #1)如果没有捕获到异常,执行完try后就执行finally
  9. #2)如果捕获到异常,try=》except=》try中未执行完的语句=》finally
  10. #3)else与finally的区别是,else是没有捕获到异常时才执行的,而finally是不管怎样都会执行的

  3.try .... except ... else

  1. try:
  2. pass
  3. except:
  4. #异常处理
  5. else:
  6. #未捕获到异常时要执行的语句

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函数对这些异常数据进行整理输出

  1. def func(a, b):
  2. return a / b
  3. if __name__ == '__main__':
  4. import sys
  5. import traceback
  6. try:
  7. func(1, 0)
  8. except Exception as e:
  9. print "print_exception()"
  10. exc_type, exc_value, exc_tb = sys.exc_info()
  11. print 'the exc type is:', exc_type
  12. print 'the exc value is:', exc_value
  13. print 'the exc tb is:', exc_tb
  14. traceback.print_exception(exc_type, exc_value, exc_tb)

Python学习之异常处理的更多相关文章

  1. 4月18日 python学习总结 异常处理、网络编程

    一. 异常 1.什么是异常 异常是错误发生的信号,程序一旦出错,如果程序中还没有相应的处理机制 那么该错误就会产生一个异常抛出来,程序的运行也随之终止 2.一个异常分为三部分: 1.异常的追踪信息 2 ...

  2. Python学习之--异常处理

    Python中的Exceptions是所有异常的基类,内置的异常类都放在了exceptions模块中,通过dir()函数可以看到这些内置的类 通过raise 语句触发异常,如 >>> ...

  3. Python学习 :异常处理

    异常处理 什么是异常处理 - python解释器检测到错误,触发异常(也允许程序员自己触发了异常) - 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,只与异常处理有关) - 如果 ...

  4. Python学习--12 异常处理、调试

    异常捕获 语法格式: try: pass except xxx as e: pass except xxx as e: pass ... else: pass finally: pass except ...

  5. python学习总结----异常处理

    相关概念 - 错误:程序运行之前的语法错误,如:关键字.缩进不齐.括号不成对. - 异常:在程序运行过程中出现的问题,如:除数为0.对象属性不存在等. 异常处理 - 说明:异常处理可以理解为特殊的流程 ...

  6. Python学习笔记(异常处理)

    用户输入了一个不合规定的值,或者需要打开的文件不存在.这些情况被称作“异常”,一个好的程序需要能处理可能发生的异常,避免程序因此而中断. 例如我们去打开一个文件: f = file('non-exis ...

  7. python学习之----异常处理小示例

    网络是十分复杂的.网页数据格式不友好,网站服务器宕机,目标数据的标签找不到,都 是很麻烦的事情.网络数据采集最痛苦的遭遇之一,就是爬虫运行的时候你洗洗睡了,梦 想着明天一早数据就都会采集好放在数据库里 ...

  8. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  9. Python学习系列(九)(IO与异常处理)

    Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Pytho ...

随机推荐

  1. php读取csv乱码问题解决方法

    <form action="erxian_cy.php" method="post" enctype="multipart/form-data& ...

  2. tomcat集群基于Nginx——共享同一个应用

    1.首先准备两个tomcat,也可以一个复制两个.和一个Nginx tomcat官方下载连接——安装版&绿色版 Nginx官网下载链接:http://nginx.org/download/ 博 ...

  3. Java编程时部分快捷键

    alt + / 内容助理 配置:Window->properties->keys->查看alt + /的配置,然后解除当前的配置->搜索content assist->解 ...

  4. 深入Jetty源码之Servlet框架及实现(Servlet、Filter、Registration)

    概述 Servlet是Server Applet的缩写,即在服务器端运行的小程序,而Servlet框架则是对HTTP服务器(Servlet Container)和用户小程序中间层的标准化和抽象.这一层 ...

  5. python time 和 datetime 模块的简介

    时间处理 time 和 datetime import timeimport datetimeprint time.time() #时间戳显示为1508228106.49print time.strf ...

  6. Django进阶Model篇006 - 多表关联查询

    接着前面的例子,举例多表查询实例如下: 1.查询作战的所有完整信息. >>> AuthorDetail.objects.values('sex','email','address', ...

  7. 四十九 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页

    逻辑处理函数 计算搜索耗时 在开始搜索前:start_time = datetime.now()获取当前时间 在搜索结束后:end_time = datetime.now()获取当前时间 last_t ...

  8. iOS-免证书真机调试

     使用方法: 1.新建一个普通的项目 2.进入xcode,菜单栏选择xcode –> preferences (快捷键 command + ,) 3.在Accounts选项卡添加自己的Apple ...

  9. VMware安装VMwareTolls

    要先启动Ubuntu,用root用户进入. 然后点击VMware的虚拟机——设置——安装VMwareTools 桌面会有一个安装包,解压后,执行vmware-install.pl 安装需要等别以为是安 ...

  10. oracle 存储过程心得2

    1.退出存储过程 return if old_save_time = new_save_time then--没有最新数据,退出 insert into hy_data_handle_mark(id, ...