首页 »Python » python教程:简明 Python 教程 -- 第13章 异常 »正文
python教程:简明 Python 教程 -- 第13章 异常
来源: 发布时间:星期四, 2009年1月8日 浏览:21次 评论:0
当你 ![](/icons/19342de.gif) ![](/icons/19342chengxu.gif) 中出现某些 异常 ![](/icons/19342de.gif) 状况 ![](/icons/19342de.gif) 时候 ![](/icons/19342dou.gif) 异常就发生了 ![](/icons/19342dou2.gif) 例如 ![](/icons/19342dou.gif) 当你想要读某个文件 ![](/icons/19342de.gif) 时候 ![](/icons/19342dou.gif) 而那个文件不存在 ![](/icons/19342dou2.gif) 或者在 ![](/icons/19342chengxu.gif) 运行 ![](/icons/19342de.gif) 时候 ![](/icons/19342dou.gif) 你不小心把它删除了 ![](/icons/19342dou2.gif) 上述这些情况可以使用异常来处理 ![](/icons/19342dou2.gif) 假如你 ![](/icons/19342de.gif) ![](/icons/19342chengxu.gif) 中有 ![](/icons/19342yi.gif) 些无效 ![](/icons/19342de.gif) 语句 ![](/icons/19342dou.gif) 会如何样呢?Python会引发并告诉你那里有 ![](/icons/19342yi.gif) 个 ![](/icons/19342cuowu.gif) ![](/icons/19342dou.gif) 从而处理这样 ![](/icons/19342de.gif) 情况 ![](/icons/19342cuowu.gif) 考虑 ![](/icons/19342yi.gif) 个简单 ![](/icons/19342de.gif) pr ![](/icons/19342int.gif) 语句 ![](/icons/19342dou2.gif) 假如我们把pr ![](/icons/19342int.gif) 误拼为Pr ![](/icons/19342int.gif) ![](/icons/19342dou.gif) 注意大写 ![](/icons/19342dou.gif) 这样Python会 引发 ![](/icons/19342yi.gif) 个语法 ![](/icons/19342cuowu.gif) ![](/icons/19342dou2.gif) >>> Pr 'Hello World' File "<stdin>", line 1 Pr 'Hello World' ^ SyntaxError: invalid syntax >>> pr 'Hello World' Hello World 我们可以观察到有 ![](/icons/19342yi.gif) 个SyntaxError被引发 ![](/icons/19342dou.gif) 并且检测到 ![](/icons/19342de.gif) ![](/icons/19342cuowu.gif) 位置也被打印了出来 ![](/icons/19342dou2.gif) 这是这个 ![](/icons/19342cuowu.gif) ![](/icons/19342cuowu.gif) 处理器 所做 ![](/icons/19342de.gif) 工作 ![](/icons/19342dou2.gif) try..except 我们尝试读取用户 ![](/icons/19342de.gif) ![](/icons/19342yi.gif) 段输入 ![](/icons/19342dou2.gif) 按Ctrl-d ![](/icons/19342dou.gif) 看 ![](/icons/19342yi.gif) 下会发生什么 ![](/icons/19342dou2.gif) >>> s = raw_input('Enter something --> ') Enter something --> Traceback (most recent call last): File "<stdin>", line 1, in ? EOFError Python引发了 ![](/icons/19342yi.gif) 个称为EOFError ![](/icons/19342de.gif) ![](/icons/19342cuowu.gif) ![](/icons/19342dou.gif) 这个 ![](/icons/19342cuowu.gif) 基本上意味着它发现 ![](/icons/19342yi.gif) 个不期望 ![](/icons/19342de.gif) 文件尾 (由Ctrl-d表示) 接下来 ![](/icons/19342dou.gif) 我们将学习如何处理这样 ![](/icons/19342de.gif) ![](/icons/19342cuowu.gif) ![](/icons/19342dou2.gif) 处理异常 我们可以使用try..except语句来处理异常 ![](/icons/19342dou2.gif) 我们把通常 ![](/icons/19342de.gif) 语句放在try-块中 ![](/icons/19342dou.gif) 而把我们 ![](/icons/19342de.gif) ![](/icons/19342cuowu.gif) 处理语句放在except-块中 ![](/icons/19342dou2.gif) 例13.1 处理异常 #!/usr/bin/python # Filename: try_except.py import sys try: s = raw_input('Enter something --> ') except EOFError: pr ' Why did you do an EOF _disibledevent= 0: ![](/icons/19342break.gif) time.sleep(2) pr line, finally: f.close![](/icons/19342kh.gif) pr 'Cleaning up...closed the file' (源文件:code/finally.py) 输出 $ 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 它如何工作 我们进行通常 ![](/icons/19342de.gif) 读文件工作 ![](/icons/19342dou.gif) 但是我有意在每打印 ![](/icons/19342yi.gif) 行的前用time.sleep思路方法暂停2秒钟 ![](/icons/19342dou2.gif) 这样做 ![](/icons/19342de.gif) 原因是让 ![](/icons/19342chengxu.gif) 运行得慢 ![](/icons/19342yi.gif) 些(Python由于其本质通常运行得很快) ![](/icons/19342dou2.gif) 在 ![](/icons/19342chengxu.gif) 运行 ![](/icons/19342de.gif) 时候 ![](/icons/19342dou.gif) 按Ctrl-c中断/取消 ![](/icons/19342chengxu.gif) ![](/icons/19342dou2.gif) 我们可以观察到KeyboardInterrupt异常被触发 ![](/icons/19342dou.gif) ![](/icons/19342chengxu.gif) 退出 ![](/icons/19342dou2.gif) 但是在 ![](/icons/19342chengxu.gif) 退出的前 ![](/icons/19342dou.gif) finally从句仍然被执行 ![](/icons/19342dou.gif) 把文件关闭 概括 我们已经讨论了try..except和try..finally语句 ![](/icons/19342de.gif) 使用方法 ![](/icons/19342dou2.gif) 我们还学习了如何创建我们自己 ![](/icons/19342de.gif) 异常类型和如何引发异常 ![](/icons/19342dou2.gif) 接下来 ![](/icons/19342dou.gif) 我们将探索Python标准库
相关文章
读者评论
发表评论
|
|