Python3异常处理
一. 简介
在编程过程中为了增加友好性,在程序出现Bug时一般不会直接将错误信息展示给用户,而是提供一个友好的输出提示。
二. 使用
1. 异常基础
常用结构:
- try:
- pass
- except Exception,ex:
- pass
其他结构:
- try:
- # 主代码块
- pass
- except KeyError,e:
- # 异常时,执行该块
- pass
- else:
- # 主代码块执行完,执行该块
- pass
- finally:
- # 无论异常与否,最终执行该块
- pass
2. 异常种类
- # 常用异常种类
- AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
- IOError 输入/输出异常;基本上是无法打开文件
- ImportError 无法引入模块或包;基本上是路径问题或名称错误
- IndentationError 语法错误(的子类) ;代码没有正确对齐
- IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
- KeyError 试图访问字典里不存在的键
- KeyboardInterrupt Ctrl+C被按下
- NameError 使用一个还未被赋予对象的变量
- SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
- TypeError 传入对象类型与要求的不符合
- UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
- 导致你以为正在访问它
- ValueError 传入一个调用者不期望的值,即使值的类型是正确的
3. 多个异常捕获
- try:
- pass
- except IndexError,e:
- pass
- except KeyError,e:
- pass
- except ValueError,e:
- pass
4. 万能异常捕获
- try:
- pass
- except Exception,e:
- pass
疑问:既然有了万能异常,那么我们还需要单异常捕获或者多异常捕获吗?
自问自答:很多场景我们需要明确异常种类,根据异常种类能快速定位产生异常的原因。如果所有异常都用万能异常捕获,虽然避免了程序抛出难看的异常,但是也无法帮助我们解决问题,常用思路是对于特殊的异常我们单独做异常报错,其他可以忽略的异常用万能异常处理。
- s1 = 'hello'
- try:
- int(s1)
- except KeyError,e:
- print('键错误')
- except IndexError,e:
- print('索引错误')
- except Exception, e:
- print('错误')
5. 自定义异常
- class MyException(Exception):
- def __init__(self, msg):
- self.message = msg
- def __str__(self):
- return self.message
- try:
- raise MyException('我的异常')
- except MyException,e:
- print(e)
6. 主动触发异常
- try:
- raise Exception('错误了。。。')
- except Exception,e:
- print(e)
7. 断言
- # 条件成立不报错,反之报错
- # assert 条件
- assert 1 == 1 # 条件成立,则继续执行下面的代码
- assert 1 == 2 # 条件不成立,则报错
Python3异常处理的更多相关文章
- python3 异常处理
什么是异常 Python用异常对象(exception object)来表示异常情况.遇到错误会引发异常,如果异常对象未被处理或者捕捉,程序就会用回溯(traceback)终止执行. Raise语句: ...
- python3异常处理 try
一. 简介 在编程过程中为了增加友好性,在程序出现Bug时一般不会直接将错误信息展示给用户,而是提供一个友好的输出提示. 二. 使用 1.异常基础 常用结构: try: pass except Exc ...
- win10上使用php与python实现与arduino串口通信
注意: php 需要php7,安装及开启php_dio.dll com口按照实际的进行设置,如果不知道可以打开arduino编辑器进行查看 可以与用户实现命令行交互,但是效率过慢,不清楚如何优化,使用 ...
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...
- 【Python3之异常处理】
一.错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^ SyntaxError: inva ...
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理) 转
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...
- 【转】Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的 ...
- python3.4学习笔记(二) 类型判断,异常处理,终止程序
python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...
- Python3基础(6)面向对象编程、异常处理
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...
随机推荐
- javascipt——原型
1.原型存在的意义 JS不是面向对象的语言,没有类的概念,但是提供了构造器函数,其也可以创建一个对象.构造器函数如下: function people(name, age, sex) { this.n ...
- Mycat实战之数据迁移(oracle -- mysql)
1.案例场景: Mycat 后面接一个 Oracle 实例与一个 MySQL 实例,假设用户表,订单表,转账记录表, Oracle 字符集为 GBK 的,MySQL 字符集则要求 UTF8的 完成用户 ...
- uboot启动正常,加载内核kernel启…
先说现象吧:uboot能够正常启动,不过在kernel启动时却出现起不了的现象,停在这里 Uncompressing Linux.................................... ...
- UIAtlas
[UIAtlas] UIAtlas is a container that has coordinate information for a bunch of sprites. AtlasType有2 ...
- 专利系统数据库连接出现 base-64字符串中的无效字符 错误
错误提示如图: 解决方法: 1.进注册表修改如下 2.进入系统配置页面http://10.10.0.70/eaf/init 对数据库进行重新配置 3.若不行再将如下密码修改一下 重启IIS生效
- Flask 上下文(Context)原理解析
:first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; m ...
- Linux Resin4.0 安装配置
Resin,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能优良,resin自身采用Java语言开发.Resin Pro版本支持缓存和负载均衡,收费 ...
- elasticsearch配置小记(转)
原文 http://bigbo.github.io/pages/2015/04/10/elasticsearch_config/ 基于 elasticsearch 1.4.4 版本.安装方式为RPM ...
- 【FZU2280】Magic
题意 给出n个字符串,每个字符串有一个权值wi 有q个操作,操作有两种 1 x y 将字符串x的权值变为y 2 x 查询操作,输出以字符串x为后缀,且权值小于等于wx的字符串个数.其中n<=10 ...
- R dataframe 遗忘, which 矩阵搜索
A data frame is used for storing data tables. It is a list of vectors of equal length. For example, ...