Python的异常处理
2023-09-11 14:20:46 时间
当你的程序中出现异常情况时就须要异常处理。比方当你打开一个不存在的文件时。当你的程序中有一些无效的语句时,Python会提示你有错误存在。
以下是一个拼写错误的样例。print写成了Print。Python是大写和小写敏感的。因此Python将引发一个错误:
>>> Print 'Hello World' File "<stdin></stdin>", line 1 Print 'Hello World' ^ SyntaxError: invalid syntax >>> print 'Hello World' Hello World
1、try...except语句
try...except语句能够用于捕捉并处理错误。通常的语句放在try块中,错误处理语句放在except块中。
示比例如以下:
#!/usr/bin/python # Filename: try_except.py import sys try: 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.py class ShortInputException(Exception): '''你定义的异常类。执行输出例如以下:''' def __init__(self, length, atleast): Exception.__init__(self) self.length = length self.atleast = atleast try: 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.py import time try: f = file('poem.txt') while True: # 读文件的一般方法 line = f.readline() if len(line) == 0: break time.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块中的语句将运行。
相关文章
- python的sciter库Pysciter安装教程(win32 + win64)
- Python英文词频统计(哈姆雷特)程序示例
- Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)—从而实现Python编程图文教程之详细攻略
- Python语言学习:Python语言学习之迭代/递归/OS输入输出/错误&异常处理的简介、案例应用之详细攻略
- Python编程语言学习:基于python各种库(matplotlib、Image)利用多种方法展示图片或进行图片可视化之详细攻略
- Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
- Python语言学习:python语言代码调试—异常处理之详细攻略
- Python IDE之Pydev: 基于Eclipse搭建python的编译环境(Eclipse+pydev)简介、安装、使用技巧方法集合之详细攻略
- 已解决2.Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and wi
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- 已解决Visit python.org to download an earlier version of Python.
- 〖Python零基础入门篇㊶〗- Python中内置异常类型
- python中异常的姓名
- python异常处理与上下文管理器
- 关于Python中的错误与异常,你是否了解的够仔细?
- 【阶段二】Python数据分析Pandas工具使用06篇:探索性数据分析:异常数据的检测与处理
- Python: yield, python 实现tail -f
- 简单理解python异常处理思想
- 写网络爬虫天然就是择Python而用 python 网络爬虫3
- python学习笔记(六)文件夹遍历,异常处理
- Python自动化测试之异常处理机制实例详解
- Python 头部 #!/usr/bin/python 和 #!/usr/bin/env 的区别
- python并发之concurrent.futures
- python - 使用traceback获取详细的异常信息
- Python 异常处理与反射机制
- python3(十四)Python 异常处理
- Python: 爬虫入门-python爬虫入门教程(非常详细)
- python零基础学编程:Python是什么?为什么Python这么火,学Python能干什么?
- Python学习笔记十一之一个简单的opencv阈值分割实例,求取圆度、轮廓椭圆拟合
- Python的学习心得和知识总结(八)|Python异常及异常处理机制