从入门到精通Python学习第十六课:异常
简介
当你的程序不能正常运行的时候,Python会在控制台打印一段提醒,告诉你一个错误,这个错误就是异常。
错误
我在控制台写了一段无效的代码,将print()的括号去掉,在执行这条语句的时候,系统提示语法错误,无效的语句(我百度翻译的)。这就是错误处理器所作的工作。
再换一种方式写错误:
在程序获取用户输入的时候,我们使用CTRL+d引发了一个EOFError错误,接下来我们尝试去处理这样的错误。
处理异常
使用try—except语句来处理异常。我们通常把容易产生异常的语句放置在try块中,把做异常处理的语句放在except块中。
import sys try: a = input('Enter something:') except(EOFError): print('\nWhy did you do an EOF on me ?') sys.exit() except: print('\nSome error/exception occurred.') print('Done')
运行结果
我们把所有可能引发错误的语句放在try块中,然后在except从句/块中处理所有的错误和异常。except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try从句,至少都有一个相关联的except从句。
你还可以让try…catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。
import sys try: a = input('Enter something:') except(EOFError): print('\nWhy did you do an EOF on me ?') sys.exit() except: print('\nSome error/exception occurred.') else: print('no error') print('Done')
运行结果
raise引发异常
你可以使用raise语句抛出异常。你需要指明错误/异常的名称和伴随异常触发的异常对象。这个异常应该是Error和Exception类的子类。这就用到了继承的思想,使用__init__方法初始一些方法和参数。
class ShortInputException(Exception): def __init__(self,length,atleast): Exception.__init__(self) self.length = length self.atleast = atleast try: s = input('Enter something-->') print(len(s)) if len(s) < 3: raise ShortInputException(len(s),atleast = 3) except(EOFError): print('\nWhy did you do an EOF on me ?') except(ShortInputException) as x: print('ShortInputException: The in input was of length %d,\ was expecting at least %d' % (x.length,x.atleast)) else: print('No exception was raised.')
运行结果
try…finally
假如在你读文件的时候发生了异常,但是无论如何文件都要关闭。这个时候该怎么做呢?
这里我们需要使用finally块来完成。
在使用try捕获异常的时候,我们可以同时使用except块和finally块。
import time try: f = open('poem.txt') while True: # our usual file-reading idiom line = f.readline() if len(line) == 0: break time.sleep(2) print(line) finally: f.close() print('Cleaning up...closed the file')
运行结果
这里使用了time的sleep函数,里面的参数是它的运行间隔。
这样我们就有时间去使用CTRL+c使程序发生异常。这时候我们发现finally块中的语句还是运行的,文件正常关闭了。
小编整理的一整套系统的Py thon学习教程从最基础的到框架再到项目实战的学习资料都有整理,送给每一位小伙伴, 有想学Py thon编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。点击加入企鹅群
—原文地址—
从入门到精通Python学习第十八课:more Python内容
从入门到精通Python学习第十七课:Python标准库
从入门到精通Python学习第十六课:异常
从入门到精通Python学习第十五课:输入与输出
从入门到精通Python学习第十四课:面向对象编程
从入门到精通Python学习第十三课:编写一个Python脚本
从入门到精通Python学习第十二课:数据结构&对象与类
从入门到精通Python学习第十一课:模块
从入门到精通Python学习第十课:return语句&DocStrings
从入门到精通Python学习第九课:参数
从入门到精通Python学习第八课:变量
从入门到精通Python学习第七课:函数&函数柯里化
从入门到精通Python学习第六课:流量控制
从入门到精通Python学习第五课:运算符与表达式
从入门到精通Python学习第四课:小的总结与补充
从入门到精通Python学习第三课:序列
从入门到精通Python学习第二课:python数据的类型
从入门到精通Python学习第一课:基础
- C# 2010 从入门到精通 学习笔记5 第6章 管理错误和异常
- C# 2010 从入门到精通 学习笔记5 第6章 管理错误和异常
- python学习之”迭代从入门到精通“
- 用Python和Pygame写游戏-从入门到精通(1)学习笔记
- Python入门基础第十六课--异常处理
- Python 学习入门(19)—— 异常
- Python 学习入门(19)—— 异常
- 阿里工程师分享Python入门到精通需要学习的教程
- python学习笔记-从入门到精通03.10
- 零基础入门学习Python(33)--异常处理:你不可能总是对的2
- 零基础入门学习Python(15):二进制存储 pickle 和异常处理
- python从入门到精通,心含谦逊,好好学习
- 从入门到精通Python学习第十七课:Python标准库
- python从入门到精通,心含谦逊,好好学习
- 从入门到精通Python学习第十八课:more Python内容
- 零基础入门学习Python(32)--异常处理:你不可能总是对的
- Python教程入门到精通:千锋Python语法基础学习视频教程
- Java 从入门到精通学习规划
- python入门学习工具
- Python基础入门教程,Python学习路线图