一、try...except

有时候我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionError

例子:

1

2

3

4

a=10

b=0

c=a/b

print "done"

运行结果:

Traceback (most recent call last):
File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in <module>
c=a/b
ZeroDivisionError: integer division or modulo by zero

我们发现程序因为ZeroDivisionError而中断了,语句print "done" 没有运行。为了处理异常,我们使用try...except,更改代码:

1

2

3

4

5

6

7

8

a=10

b=0

try:

    c=a/b

    print c

except ZeroDivisionError,e:

    print e.message

print "done"

  

运行结果:

integer division or modulo by zero
done

这样程序就不会因为异常而中断,从而print "done"语句正常执行。

我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except

处理一组异常可以这样写(其中e代表异常的实例):

1

2

3

4

try

    pass

except (IOError ,ZeroDivisionError),e:

    print e

try ....except...else 语句,当没有异常发生时,else中的语句将会被执行。

例子:

1

2

3

4

5

6

7

8

9

10

a=10

b=0

try:

    = b/ a

    print c

except (IOError ,ZeroDivisionError),x:

    print x

else:

    print "no error"

print "done"

运行结果:

0
no error
done

二、raise 引发一个异常

例子:如果输入的数据不是整数,则引发一个ValueError

1

2

3

4

5

inputValue=input("please input a int data :")

if type(inputValue)!=type(1):

    raise ValueError

else:

    print inputValue

假设输入1.2,运行结果为:

please input a int data :1.2
Traceback (most recent call last):
File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in <module>
raise ValueError
ValueError

如果输入1,运行结果为:

please input a int data :1
1

三、try ...finally 

无论异常是否发生,在程序结束前,finally中的语句都会被执行。

1

2

3

4

5

6

a=10

b=0

try:

    print a/b

finally:

    print "always excute"

运行结果:

Traceback (most recent call last):
always excute
File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 4, in <module>
print a/b
ZeroDivisionError: integer division or modulo by zero

虽然有异常发生,但在程序终止前,finally中的语句也能正常执行。。

finally语句也可以和except语句一起使用。

1

2

3

4

5

6

7

8

a=10

b=0

try:

    print a/b

except:

    print "error"

finally:

    print "always excute"

运行结果:

error

always excute

四、自定义一个异常类

自定义一个MyException类,继承Exception。

1

2

3

4

class MyException(Exception):

    def __init__(self,message):

        Exception.__init__(self)

        self.message=message   

如果输入的数字小于10,就引发一个MyException异常:

1

2

3

4

5

6

a=input("please input a num:")

if a<10:

    try:

        raise MyException("my excepition is raised ")

    except MyException,e:

        print e.message

  

运行结果:

please input a num:1
my excepition is raised

五、python所有的标准异常类:

异常名称 描述
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
SystemExit Python 解释器请求退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败
OSError 操作系统错误
WindowsError 系统调用失败
ImportError 导入模块/对象失败
KeyboardInterrupt 用户中断执行(通常是输入^C)
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 用户代码生成的警告

  

(Python)异常处理try...except、raise相关推荐

  1. 执行transact-sql语句或批处理时发生异常_DAY5-step6 Python异常处理:try, raise,except, finally...

    Python中的异常是什么? 异常是在程序执行时发生的错误. 在运行程序时,Python如果发生一个异常,应将其处理以避免程序崩溃. 在Python语言中,异常会在错误时自动触发,或者可以由您的代码触 ...

  2. Python 异常处理--raise函数用法

    Python 异常处理--raise函数用法 参考文章: (1)Python 异常处理--raise函数用法 (2)https://www.cnblogs.com/darkgui34/p/405074 ...

  3. python异常处理--try except else raise finally

    python异常处理--try except else raise finally 参考文章: (1)python异常处理--try except else raise finally (2)http ...

  4. Python零基础速成班-第6讲-Python异常处理Exception,tryexcept,raise,assert,输入模块pyinputplus

    Python零基础速成班-第6讲-Python异常处理Exception,try&except,raise,assert,输入模块pyinputplus 学习目标 异常处理Exception: ...

  5. 系统学习Python——异常处理:raise语句

    如果要显式地触发异常,可以使用raise语句.它们的一般形式相当简单.一条raise语句的组成包括raise关键字,后面跟着可选的要引发的异常类或者异常类的一个实例: raise instance # ...

  6. python示例异常处理与程序调试_笔记:Python异常处理与程序调试

    Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...

  7. python处理流程-Python异常处理大全(二)

    原标题:Python异常处理大全(二) 本文是Python异常处理教程的第二部分,上部分我们简单的介绍了几种异常,及其处理办法,这部分我们将更详细地对Python中产生的异常处理方法进行探讨. 函数使 ...

  8. 十一、Python异常处理

    Python异常处理 异常抛出机制,为程序开发人员提供了一种在运行时发现错误,进行回复处理,然后继续执行的能力 #!/usr/bin/python try: open('abc.txt') excep ...

  9. Python异常处理体系简介(1)

    http://developer.51cto.com/art/200902/111535.htm Python异常处理体系 1.Python内建异常体系结构 The class hierarchy f ...

  10. python异常处理_汇总三大python异常处理、自定义异常、断言原理与用法分析

    本文实例讲述了python异常处理.自定义异常.断言原理与用法.分享给大家供大家参考,具体如下: 什么是异常: 当程序遭遇某些非正常问题的时候就会抛出异常:比如int()只能处理能转化成int的对象, ...

最新文章

  1. opencv各版本 IplImage Mat 转换
  2. ionic3 安装遇到的问题
  3. 笔记整理-信息技术服务标准-ITSS生命周期
  4. 分形(Fractal)
  5. Python爬虫之旅_ONE
  6. 如何在3个月内拥有3年的工作经验
  7. OpenStack(四)——Nova组件
  8. javascript在asp.net中运用
  9. 20162303 队列加分项-杨辉三角
  10. Java 8 新特性001_Java 8 Optional 类
  11. MyBatis 拦截器(4)
  12. 拓端tecdat|【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例
  13. scratch python的区别ev3_机器人编程和少儿编程,傻傻分不清—乐高EV3入门感想
  14. 大国崛起(三) 大不列颠及北爱尔兰联合王国(英国)
  15. linux rsh通信实现_RSH的网络通信细节
  16. csdn中Markdown编辑器的使用
  17. Unity 3D Generic动画类型,对于应用RootMotion的设置
  18. imag在matlab,Matlab基本函数-imag函数 | 学步园
  19. 路径上有/**/、/*/的含义
  20. 频谱 功率谱 功率谱密度

热门文章

  1. Java实现字符串反转的几种方法
  2. oracle查询最新100条数据
  3. tring.Format格式化用法
  4. C# web references 调用出错 The underlying connection was closed: An unexpected error occurred on a send.
  5. rpc--sekiro框架
  6. NPOI写Excel,Spire.XLS for.NET组件转换Excel为PDF
  7. 非递归实现二叉树的遍历
  8. 基于FaceNet的实时人脸识别训练
  9. 【51单片机】考试例程|汇编实现
  10. ResNet网络详解