Python的异常处理机制 -- (转)
当你的程序中出现异常情况时就需要异常处理。比如当你打开一个不存在的文件时。当你的程序中有一些无效的语句时,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的异常处理机制 -- (转)相关推荐
- python基础编程之 7-2 python的异常处理机制
7-2 python的异常处理机制 Date: 2021-06-13 Author: SunnyChou 异常处理 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行. python提 ...
- python的异常处理机制
1.什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Py ...
- python异常处理机制的好处_浅谈Python异常处理机制
异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...
- python提供什么机制处理程序运行错误_浅谈Python异常处理机制
异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...
- Python学习笔记(十三):异常处理机制
Python学习笔记(十三):异常处理机制 关于Python的异常处理机制 Python学习笔记(十三):异常处理机制 一.异常处理机制 常见异常类型 二.异常处理 try...except 异常类的 ...
- 【Python学习教程】Python异常处理机制
文章目录 什么是异常处理,Python常见异常类型(入门必读) Python语法错误 Python运行时错误 Python异常处理机制到底有什么用? Python try except异常处理详解(入 ...
- Python入门学习之异常处理机制
异常即是一个事件,该事件会在程序执行过程中发生影响程序的正常执行.python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.今天的Python入门学习课程就给大家讲解一下异常 ...
- 深入对比数据科学工具箱:Python和R的异常处理机制
概述 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件).Python和R作为一门编程语言自然也是有各自的异常处理机制的,异常 ...
- Python之异常处理(异常处理机制,抛出异常,自定义异常)
文章目录 1.常见的Exception 2.异常处理机制 3.抛出异常 4.自定义异常 1.常见的Exception AttributeError .IOError .ImportError .Ind ...
最新文章
- QLocalServer与QLocalSocket进程通讯
- 网页中嵌套网页flush_如何修改网页中的内容?
- 你真的懂js获取可视区宽高吗
- Modbus协议栈开发笔记之四:Modbus TCP Client开发
- 这一次,字节的组织进化选择优化了CEO(附张一鸣卸任CEO内部信全文)
- NNS域名系统之SGAS
- 【转】Cowboy 开源 WebSocket 网络库
- 【CNN】多角度理解CNN
- 一些iptables的具体应用
- PHP获取真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
- 用excel制作项目管理甘特图
- 村上春树 --《当我谈跑步时,我谈些什么》句子摘录​
- 从表征到行动---意向性的自然主义进路(续五)
- Tomcat8.5后版本不返回200 OK的问题解决
- 响应式网页设计学习笔记
- Redis学习笔记·
- Linux系统管理-开机启动流程
- 使用Tand自动化您的机器学习工作流程
- 安装VMware的VM Tools
- 火狐浏览器CSS兼容的解决方法~
热门文章
- Learning Perl 4
- Only the original thread that created a view hierarchy can touch its views——Handler的使用
- android 使用compareTo比较大小
- Bluetooth协议栈
- Booting Android: bootloaders, fastboot and boot images
- 设计模式---单例模式(多线程下的单例模式)
- DatePickerDialog 简单用法
- OGC和Khronos建立合作关系,共同推动地理信息和3D图形社群的交互操作
- JVM—加载到方法区的Class文件长什么样?
- MyBatis入门HelloWorld,注解实现