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学习自修第十九天【异常处理】的更多相关文章

  1. 老男孩python学习自修第二十四天【多进程】

    1. 体验多进程的运行速度 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from multiprocessing import Pool import t ...

  2. 老男孩python学习自修第十六天【常用模块之sys和os】

    例子: sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys. ...

  3. 老男孩python学习自修第十五天【常用模块之time】

    例如: #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import time if __name__ == "__main__": pr ...

  4. 老男孩python学习自修第十四天【序列化和json】

    序列化是使用二进制的方式加密列表,字典或集合,反序列化是解密的过程:序列化开启了两个独立进程进行数据交互的通路 使用pickle进行序列化和反序列化 例如: pickle_test.py #!/usr ...

  5. 老男孩python学习自修第十天【三元表达式与lambda表达式】

    例如: 1.使用三元表达式给变量赋值 result = '空' if x == None else x 2.使用lambda定义函数 add = lambda x, y: x+y

  6. 老男孩python学习自修第九天【yield生成器】

    1.如果在一个方法中有yield关键字则该方法返回的是一个生成器对象 2.对生成器对象进行操作必须进行迭代或循环处理 例如: yield_test.py #!/usr/bin/env python # ...

  7. 老男孩python学习自修第二十三天【多线程】

    1. 线程的创建与运行 #!/usr/bin/env python # _*_ coding:UTF-8 _*_ from threading import Thread def foo(param1 ...

  8. 老男孩 python学习自修第二十二天【文件上传与下载】

    1.使用socket实现文件上传 server.py #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import os import SocketServe ...

  9. 老男孩python学习自修第十八天【面向对象】

    1.类与对象(构造方法与实例化) #!/usr/bin/env python # _*_ coding:UTF-8 _*_ class Province: def __init__(self, nam ...

随机推荐

  1. 【转】联普多WAN口路由器是否可以设置叠加带宽

    TP-link联普是全球领先的通讯供应厂商之一,那么你是否知道联普多WAN口路由器可以设置叠加带宽吗?下面是学习啦小编整理的一些关于联普多WAN口路由器是否可以设置叠加带宽的相关资料,供你参考. 联普 ...

  2. Python socket套接字简单例子

  3. CF1083E The Fair Nut and Rectangles

    CF1083E The Fair Nut and Rectangles 给定 \(n\) 个平面直角坐标系中左下角为坐标原点,右上角为 \((x_i,\ y_i)\) 的互不包含的矩形,每一个矩形拥有 ...

  4. Echo团队Alpha冲刺随笔 - 第五天

    项目冲刺情况 进展 前端:布局,内容等方面基本完成. 后端:基本功能基本实现. 计划:准备进行前后端对接,进行测试 问题 有部分代码冗余,需要着手修改 心得 团队分工明确,互相协作,开发进度比预想的要 ...

  5. mongo中命令工作原理

    1.db.runCommand命令 db.runCommand({OPTION:'COLLECTION_NAME'}) runCommand命令是mongo的执行命令,可以执行mongo的任何命令,其 ...

  6. python:利用pymssql模块操作SQL server数据库

    python默认的数据库是 SQLlite,不过它对MySql以及SQL server的支持也可以.这篇博客,介绍下如何在Windows下安装pymssql库并进行连接使用... 环境:Windows ...

  7. 阅读ARM Memory(L1/L2/MMU)笔记

    <ARM Architecture Reference Manual ARMv8-A>里面有Memory层级框架图,从中可以看出L1.L2.DRAM.Disk.MMU之间的关系,以及他们在 ...

  8. Vue-插槽学习

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. C#中存储数据的集合:数组、集合、泛型、字典

    为什么把这4个东西放在一起来说,因为c#中的这4个对象都是用来存储数据的集合……. 首先咱们把这4个对象都声明并实例化一下: //数组 ]; //集合 ArrayList m_AList = new ...

  10. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 对外不要提供Delete方法加强软件的安全性

    1:软件系统一般不怕外面的人,最怕有内鬼.2:软件系统不怕一万,就怕万一,最好不要对外有漏洞,能不提供Delete方法就不提供.3:特别是不要有能远程调用的Delete方法,那就是出了事情都无法找到是 ...