1:Python3中异常处理介绍

在Python中当发生错误时,Python中的异常会自动触发,异常也能由代码触发和拦截,Python中有如下语句来触发,处理异常:

a:try/except:拦截由Python或者自己的代码引起的异常并从中恢复。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

b:try/finally:无论异常是否发生,都会执行的代码。

c:raise:手动在代码中触发异常。

d:assert:有条件在程序代码中触发异常。

e:with/as:上下文管理器,try/finally的替代方案。

Python中异常的语法形式如下:

"""# 形式一:(方括号表示可选,星号表示0个或多个)try:    statementsexcept  [type [as value]]:    statements[except  [type [as value]]:    statements]*[else:    statements][finally:    statements]# 形式二:try:    statementsfinally:    statements"""

2:异常处理语句

2.1:try/except/else

捕获指定的异常:

# encoding=gbkimport traceback def getValue(obj,index):    return obj[index] def test():     lst = ['123','456','abc']    try:        # ret = getValue(lst,2)        ret = getValue(lst,6)        print(ret)    except IndexError as e:        val = traceback.format_exc() # 获取异常信息        print(val)    else:        print('no Exception')  # 没有异常就会执行到这里      print('end call test!')  # 如果try下的语句引发了异常,并且在except中有匹配且终止了异常,那么就会执行到这里 if __name__ == '__main__':    test()

捕获所有的异常:

# encoding=gbkimport traceback def getValue(obj,index):    return obj[index] def test():     lst = ['123','456','abc']    try:        # ret = getValue(lst,2)        ret = getValue(lst,6)        print(ret)    except IndexError as e: # 捕获指定的异常        val = traceback.format_exc() # 获取异常信息        print(val)    except Exception:  # 捕获所有的异常        val = traceback.format_exc()  # 获取异常信息        print(val)    else:        print('no Exception')  # 没有异常就会执行到这里      print('end call test!')  # 如果try下的语句引发了异常,并且在except中有匹配且终止了异常,那么就会执行到这里 if __name__ == '__main__':    test()

2.2:try/finally

# encoding=gbkimport traceback def getValue(obj,index):    return obj[index] def test():     lst = ['123','456','abc']    try:        # ret = getValue(lst,2)        ret = getValue(lst,'ss')        print(ret)    except IndexError as e:  # 捕获指定的异常        val = traceback.format_exc() # 获取异常信息        print(val)    except Exception:  # 捕获所有的异常        val = traceback.format_exc()  # 获取异常信息        print(val)    else:        print('no Exception')  # 没有异常就会执行到这里     finally:        print('in finally!')  # 不管是否有异常,都会执行到这里     print('end call test!')  # 如果try下的语句引发了异常,并且在except中有匹配且终止了异常,那么就会执行到这里 if __name__ == '__main__':    test()

2.3:raise:引发异常

# encoding=gbkimport traceback def getValue(obj,index):    # return obj[index]    raise IndexError def test():     lst = ['123','456','abc']    try:        ret = getValue(lst,2)        # ret = getValue(lst,6)        print(ret)    except IndexError as e:  # 捕获指定的异常        val = traceback.format_exc() # 获取异常信息        print(val)    except Exception:  # 捕获所有的异常        val = traceback.format_exc()  # 获取异常信息        print(val)    else:        print('no Exception')  # 没有异常就会执行到这里     finally:        print('in finally!')  # 不管是否有异常,都会执行到这里     print('end call test!')  # 如果try下的语句引发了异常,并且在except中有匹配且终止了异常,那么就会执行到这里 if __name__ == '__main__':    test()

2.4:with/as:上下文管理器

# encoding=gbk class Test:    def printInfo(self,arg):        print('in printInfo:',arg)     def __enter__(self):        print('in __enter__')        return self     def __exit__(self, exc_type, exc_val, exc_tb):        if exc_type is None:            print('exited normally\n')        else:            print('raise an exception! ' + str(exc_type) )            return False if __name__ == "__main__":    with Test() as t:        t.printInfo('test 1!')        print('test1')     print('*'*40)     with Test() as t:        t.printInfo('test 2!')        raise IndexError        print('test2')

3:Python中常见异常

异常名称 描述
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败
OSError 操作系统错误
WindowsError 系统调用失败
ImportError 导入模块/对象失败
LookupError 无效数据查询的基类
IndexError 序列中没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 一般的解释器系统错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造将来语义会有改变的警告
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告

Python3中异常处理和try/except,try/finally的用法相关推荐

  1. R语言中的异常处理和eval函数

    异常处理tryCatch() [R]R语言里的异常处理与错误控制 看看下面这个例子就能快速了解. #这里不要用c(1,2,'a',4), 因为R中向量中的元素必须一致,会自动转换成c("1& ...

  2. 具有中央异常处理和VO验证的Spring Data JPA –框架

    1.简介 一段时间以来,Spring框架已成为事实上的标准,可以创建任何基于REST API的应用程序. Spring提供了各种现成的组件,以避免编写重复而繁琐的样板代码. 另外,关于Spring的美 ...

  3. java 运行异常处理_Java编程异常处理和I/O流

    重点: 1.在编写程序时,要正确地使用捕获例外和声明抛出异常的两种例外处理的方法. 2.遇到实际问题时,要根据需要正确使用各种输入/输出流,特别是对中文使用适当的字符输入流. 3.正确使用对象串行化的 ...

  4. vb.net结构化异常处理和“邪用”

    vb.net中的错误处理包括两种:非结构化异常处理技术和结构化异常处理.非结构化异常处理技术在vb 6.0中使用的比较普遍,即通过Err对象和ON Error.Go To.Resume等语句来实现.这 ...

  5. 客户端soap【JAX-WS入门系列】第04章_SOAP异常处理和Handler处理

    这段时间一直在查找客户端soap之类的问题,下午恰好有机会和大家共享一下. 客户端和服务端都是Java Project,首先列出服务端代码 首先是SEI,即服务端接口类HelloService.jav ...

  6. Java第六次作业--异常处理和Java类集

    (一)学习总结 1.用思维导图对本周的学习内容进行总结. 2.当程序中出现异常时,JVM会依据方法调用顺序依次查找有关的错误处理程序.可使用printStackTrace 和getMessage方法了 ...

  7. 异常处理和UDP协议

    一.什么是异常? 程序在运行过程中出现了不可预知的错误,并且该错误没对应的处理机制,那么就会以异常的形式表示出来, 造成的影响就是整个程序无法再正常的运行,抛出异常. 二.异常的结构: 1:异常的类型 ...

  8. oracle plsql异常,【Oracle篇】异常处理和PLSQL

    一.所有的PL/SQL异常都具有以下几个基本特征: 错误类型:表示了错误是ORA错误还是PLS错误 错误代号:一串表示错误代号的数字 错误文本:错误消息文本,包括错误代号 二.PL/SQL会产生两种类 ...

  9. 阅读react-redux源码(五) - connectAdvanced中store改变的事件转发、ref的处理和pure模式的处理

    阅读react-redux源码 - 零 阅读react-redux源码 - 一 阅读react-redux源码(二) - createConnect.match函数的实现 阅读react-redux源 ...

最新文章

  1. Mariadb修改root密码
  2. 在浏览器里,从输入 URL 到页面展示,这中间发生了什么?-学习笔记
  3. 愚人节防骗?你需要一本《2018反欺诈白皮书》
  4. qt5.10 for android 使用webview时qml 与html 中js的相互访问
  5. android sqlite 备份数据库文件,android – 将SQLite数据库备份和还原到sdcard
  6. 手指甲上的月牙辨健康,月牙会“丢”也能“长回来”
  7. 敏捷团队为何失败,Bash技巧,Emacs vs. Vim,为Linux粉丝撰写的12部小说读物,以及其他热门歌曲
  8. Linux之wget命令详解
  9. [转]JavaScript 删除数组中指定值的元素
  10. #CSP 201509-1 数列分段(100分)
  11. centos7执行 wget命令: command not found的两种解决方法
  12. 品味.NET经典[转载]
  13. html推箱子过关检测函数,HTML5推箱子实现
  14. LinuxCNC学习-HAL库介绍
  15. xshell怎么上传文件
  16. 龙芯2F一体机硬盘修复
  17. vue NavigationDuplicated: Avoided redundant navigation to current location
  18. [模电]差模信号、共模信号的通俗解释
  19. 学习嵌入式的书籍推荐,嵌入式编程入门教程学习大纲
  20. 教你如何用cmd命令清除流氓软件

热门文章

  1. django-演练-英雄的编辑
  2. jquery-显示隐藏-链式调用
  3. javascript-变量的作用域
  4. python导出mysql授权语句
  5. 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
  6. UIScrollView相关问题(计算分页)
  7. Python gevent学习笔记 1
  8. Windows下资源泄漏检测
  9. 【原创】使用yahoo雅虎js库(YUI)建立无刷新的N级树(可添加删除节点)
  10. JavaScript缓存处理代码