当你的程序中出现异常情况时就需要异常处理。比如当你打开一个不存在的文件时。当你的程序中有一些无效的语句时,Python会提示你有错误存在。

下面是一个拼写错误的例子,print写成了Print。Python是大小写敏感的,因此Python将引发一个错误:

>>> Print 'Hello World'File "", line 1Print 'Hello World'^
SyntaxError: invalid syntax>>> print 'Hello World'
Hello World

1、try...except语句

try...except语句可以用于捕捉并处理错误。通常的语句放在try块中,错误处理语句放在except块中。示例如下:

#!/usr/bin/python
# Filename: try_except.pyimport systry:s = raw_input('Enter something --> ')
except EOFError:#处理EOFError类型的异常print '/nWhy did you do an EOF on me?'sys.exit() # 退出程序
except:#处理其它的异常print '/nSome error/exception occurred.'print 'Done'

运行输出如下:

$ python try_except.py
Enter something -->
Why did you do an EOF on me?$ python try_except.py
Enter something --> Python is exceptional!
Done

说明:每个try语句都必须有至少一个except语句。如果有一个异常程序没有处理,那么Python将调用默认的处理器处理,并终止程序且给出提示。

2、引发异常

你可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类。
下面是一个引发异常的例子:

#!/usr/bin/python
#文件名: raising.pyclass ShortInputException(Exception):'''你定义的异常类。'''def __init__(self, length, atleast):Exception.__init__(self)self.length = lengthself.atleast = atleasttry:s = raw_input('请输入 --> ')if len(s) < 3:raise ShortInputException(len(s), 3)# raise引发一个你定义的异常
except EOFError:print '/n你输入了一个结束标记EOF'
except ShortInputException, x:#x这个变量被绑定到了错误的实例print 'ShortInputException: 输入的长度是 %d, /长度至少应是 %d' % (x.length, x.atleast)
else:print '没有异常发生.'

运行输出如下:

$ python raising.py
请输入 -->
你输入了一个结束标记EOF$ python raising.py
请输入 --> --> ab
ShortInputException: 输入的长度是 2, 长度至少应是 3$ python raising.py
请输入 --> abc
没有异常发生.

3、try...finally语句

当你正在读文件或还未关闭文件时发生了异常该怎么办呢?你应该使用try...finally语句以释放资源。示例如下:

#!/usr/bin/python
# Filename: finally.pyimport timetry:f = file('poem.txt')while True: # 读文件的一般方法line = f.readline()if len(line) == 0:breaktime.sleep(2)#每隔两秒输出一行print line,
finally:f.close()print 'Cleaning up...closed the file'

运行输出如下:

$ python finally.py
Programming is fun
When the work is done
Cleaning up...closed the file
Traceback (most recent call last):File "finally.py", line 12, in ?time.sleep(2)
KeyboardInterrupt

说明:我们在两秒这段时间内按下了Ctrl-c,这将产生一个KeyboardInterrupt异常,我们并没有处理这个异常,那么Python将调用默认的处理器,并终止程序,在程序终止之前,finally块中的语句将执行。

转载于:https://www.cnblogs.com/fendou-999/p/3590668.html

Python的异常处理机制 -- (转)相关推荐

  1. python基础编程之 7-2 python的异常处理机制

    7-2 python的异常处理机制 Date: 2021-06-13 Author: SunnyChou 异常处理 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行. python提 ...

  2. python的异常处理机制

    1.什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Py ...

  3. python异常处理机制的好处_浅谈Python异常处理机制

    异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...

  4. python提供什么机制处理程序运行错误_浅谈Python异常处理机制

    异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...

  5. Python学习笔记(十三):异常处理机制

    Python学习笔记(十三):异常处理机制 关于Python的异常处理机制 Python学习笔记(十三):异常处理机制 一.异常处理机制 常见异常类型 二.异常处理 try...except 异常类的 ...

  6. 【Python学习教程】Python异常处理机制

    文章目录 什么是异常处理,Python常见异常类型(入门必读) Python语法错误 Python运行时错误 Python异常处理机制到底有什么用? Python try except异常处理详解(入 ...

  7. Python入门学习之异常处理机制

    异常即是一个事件,该事件会在程序执行过程中发生影响程序的正常执行.python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.今天的Python入门学习课程就给大家讲解一下异常 ...

  8. 深入对比数据科学工具箱:Python和R的异常处理机制

    概述 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件).Python和R作为一门编程语言自然也是有各自的异常处理机制的,异常 ...

  9. Python之异常处理(异常处理机制,抛出异常,自定义异常)

    文章目录 1.常见的Exception 2.异常处理机制 3.抛出异常 4.自定义异常 1.常见的Exception AttributeError .IOError .ImportError .Ind ...

最新文章

  1. QLocalServer与QLocalSocket进程通讯
  2. 网页中嵌套网页flush_如何修改网页中的内容?
  3. 你真的懂js获取可视区宽高吗
  4. Modbus协议栈开发笔记之四:Modbus TCP Client开发
  5. 这一次,字节的组织进化选择优化了CEO(附张一鸣卸任CEO内部信全文)
  6. NNS域名系统之SGAS
  7. 【转】Cowboy 开源 WebSocket 网络库
  8. 【CNN】多角度理解CNN
  9. 一些iptables的具体应用
  10. PHP获取真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
  11. 用excel制作项目管理甘特图
  12. 村上春树 --《当我谈跑步时,我谈些什么》句子摘录​
  13. 从表征到行动---意向性的自然主义进路(续五)
  14. Tomcat8.5后版本不返回200 OK的问题解决
  15. 响应式网页设计学习笔记
  16. Redis学习笔记·
  17. Linux系统管理-开机启动流程
  18. 使用Tand自动化您的机器学习工作流程
  19. 安装VMware的VM Tools
  20. 火狐浏览器CSS兼容的解决方法~

热门文章

  1. Learning Perl 4
  2. Only the original thread that created a view hierarchy can touch its views——Handler的使用
  3. android 使用compareTo比较大小
  4. Bluetooth协议栈
  5. Booting Android: bootloaders, fastboot and boot images
  6. 设计模式---单例模式(多线程下的单例模式)
  7. DatePickerDialog 简单用法
  8. OGC和Khronos建立合作关系,共同推动地理信息和3D图形社群的交互操作
  9. JVM—加载到方法区的Class文件长什么样?
  10. MyBatis入门HelloWorld,注解实现