老男孩python学习自修第十九天【异常处理】
1.常见的错误
TypeError 类型错误
NameError 没有该变量
ValueError 不期望的值
AttributeError 没有该属性
UnboundLocalError 没有该局部变量
ImportError 没有该模块
IOError 打不开文件
IndexError 列表没有该下标
KeyError 字典没有该键
IndentationError 代码没有对齐
SyntaxError 语法错误
KeyboardError Ctrl+C被按下
2.示例代码
#!/usr/bin/env python # _*_ coding:UTF-8 _*_ if __name__ == "__main__": try: pass except (NameError, ValueError), e: print "NameError或者ValueError" except IOError, e: print "IOError" except Exception, e: print "其他的错误" else: print "没有错误" finally: print "有没有错误都执行"
3.自定义异常与手动触发异常
#!/usr/bin/env python # _*_ coding:UTF-8 _*_ class MyException(Exception): def __init__(self, error): self.error = error def __str__(self): return self.error if __name__ == "__main__": try: raise MyException("自定义错误") except (NameError, ValueError), e: print e print "NameError或者ValueError" except IOError, e: print e print "IOError" except Exception, e: print e print "其他的错误" else: print "没有错误" finally: print "有没有错误都执行"
结果:
/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/day19/except_test.py 自定义错误 其他的错误 有没有错误都执行 Process finished with exit code 0
注意:
(1)若类中定义了__str__()则直接写该类时会调用该__str__()
(2)使用raise Exception()会手动触发异常
老男孩python学习自修第十九天【异常处理】的更多相关文章
- 老男孩python学习自修第二十四天【多进程】
1. 体验多进程的运行速度 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from multiprocessing import Pool import t ...
- 老男孩python学习自修第十六天【常用模块之sys和os】
例子: sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys. ...
- 老男孩python学习自修第十五天【常用模块之time】
例如: #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import time if __name__ == "__main__": pr ...
- 老男孩python学习自修第十四天【序列化和json】
序列化是使用二进制的方式加密列表,字典或集合,反序列化是解密的过程:序列化开启了两个独立进程进行数据交互的通路 使用pickle进行序列化和反序列化 例如: pickle_test.py #!/usr ...
- 老男孩python学习自修第十天【三元表达式与lambda表达式】
例如: 1.使用三元表达式给变量赋值 result = '空' if x == None else x 2.使用lambda定义函数 add = lambda x, y: x+y
- 老男孩python学习自修第九天【yield生成器】
1.如果在一个方法中有yield关键字则该方法返回的是一个生成器对象 2.对生成器对象进行操作必须进行迭代或循环处理 例如: yield_test.py #!/usr/bin/env python # ...
- 老男孩python学习自修第二十三天【多线程】
1. 线程的创建与运行 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from threading import Thread def foo(param1 ...
- 老男孩 python学习自修第二十二天【文件上传与下载】
1.使用socket实现文件上传 server.py #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import os import SocketServe ...
- 老男孩python学习自修第十八天【面向对象】
1.类与对象(构造方法与实例化) #!/usr/bin/env python # _*_ coding:UTF-8 _*_ class Province: def __init__(self, nam ...
随机推荐
- Idea突然不停indexing的问题
只要清理一下Idea的缓存和索引就可以了,在File-Invalidate Caches / Restart中,选择Invalidate and Restart,之后会重启Idea,然后就解决啦!
- P1865 A % B Problem
(一道很水的题) (反正我第一眼看的时候也是这么想的) 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接 ...
- num2cell
num2cell的作用是把数值数组转换为cell数组. 最基本的用法是把数值数组的每个元素作为cell数组的元素,得到一个和原数组维度完全相同的cell数组,例如 >> A=magic(3 ...
- 深入浅出Redis05-Redis集群环境的配置
一.安装redis 1,下载redis最新版 从以下redis地址下载最新版本的redis,使用使用redis-3.2.9.tar版本. http://download.redis.io/releas ...
- Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务
首先简单解释一下什么是声明式实现? 要做一件事, 需要知道三个要素,where, what, how.即在哪里( where)用什么办法(how)做什么(what).什么时候做(when)我们纳入ho ...
- 异步操作之 Promise 和 Async await 用法进阶
ES6 提供的 Promise 方法和 ES7 提供的 Async/Await 语法糖都可以更好解决多层回调问题, 详细用法可参考:https://www.cnblogs.com/cckui/p/99 ...
- H5 71-网易注册界面4
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- long long 的输入输出问题
参考博客:https://www.byvoid.com/zhs/blog/c-int64
- NFV论文集(二)
一 文章名称:VNF Placement with Replication for Load Balancing in NFV Networks 发表时间:2017 期刊来源:ICC: IEEE In ...
- Factors of Factorial AtCoder - 2286 (N的阶乘的因子个数)(数论)
Problem Statement You are given an integer N. Find the number of the positive divisors of N!, modulo ...