异常
当你的程序中出现某些异常的状况的时候,异常就发生了。例如,当你想要读某个文件的时候,而那个文件不存在。或者在程序运行的时候,你不小心把它删除了。上述这些情况可以使用异常来处理。
假如你的程序中有一些无效的语句,会怎么样呢?Python会引发并告诉你那里有一个错误,从而处理这样的情况。
- try..except
1.处理异常
我们可以使用try..except语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。
处理异常的例子如下:
import sys try: s = raw_input('Enter something --> ') except EOFError: print '\nWhy did you do an EOF on me?' sys.exit() except: print '\nSome error/exception occurred.' print 'Done'
输出:
Enter something --> + Done
我们把所有可能引发错误的语句放在try块中,然后在except从句/块中处理所有的错误和异常。
except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理所有的错误和异常。对于每个try从句,至少都有一个相关联的except从句。
如果某个错误或异常没有被处理,默认的Python处理器就会被调用。它会终止程序的运行,并且打印一个消息,我们已经看到了这样的处理。
还可以让try..catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。
2.引发异常
我们还可以得到异常对象,从而获取更多有个这个异常的信息。
可以使用raise语句引发异常。你还得指明错误/异常的名称和伴随异常触发的异常对象。你可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。
如何引发异常的例子如下:
class ShortInputException(Exception): '''A user-defined exception class.''' def __init__(self, length, atleast): Exception.__init__(self) self.length = length self.atleast = atleast try: s = raw_input('Enter something --> ') if len(s) < 3: raise ShortInputException(len(s), 3) except EOFError: print '\nWhy did you do an EOF on me?' except ShortInputException, x: print 'ShortInputException: The input was of length %d, \ was expecting at least %d' % (x.length, x.atleast) else: print 'No exception was raised.'
输出:
Enter something --> 2222 No exception was raised. Enter something --> 1 ShortInputException: The input was of length 1, was expecting at least 3
这里,我们创建了我们自己的异常类型,其实我们可以使用任何预定义的异常/错误。这个新的异常类型是ShortInputException类。它有两个域:length是给定输入的长度,atleast则是程序期望的最小长度。
在except从句中,我们提供了错误类和用来表示错误/异常对象的变量。这与函数调用中的形参和实参概念类似。在这个特别的except从句中,我们使用异常对象的length和atleast域来为用户打印一个恰当的消息。
- try..finally
假如你在读一个文件的时候,希望在无论异常发生与否的情况下都关闭文件,该怎么做呢?这可以使用finally块来完成。注意,在一个try块下,你可以同时使用except从句和finally块。如果你要同时使用它们的话,需要把一个嵌入另外一个。
使用finally例子如下:
import time f = file('poem.txt') try: while True: line = f.readline() if len(line) == 0: break time.sleep(2) print line, finally: f.close() print 'Cleaning up...closed the file'
输出:
Programming is fun When the work is done if you wanna make your work also fun: use Python! Cleaning up...closed the file
我们进行通常的读文件工作,但是我有意在每打印一行之前用time.sleep方法暂停2秒钟。这样做的原因是让程序运行得慢一些(Python由于其本质通常运行得很快)。在程序运行的时候,按Ctrl-c中断/取消程序。我们可以观察到KeyboardInterrupt异常被触发,程序退出。但是在程序退出之前,finally从句仍然被执行,把文件关闭。
相关推荐
刚开始学习python很不容易理解,python在线教学中异常处理
【Python学习 —— 代码&笔记(年11月30日、12月1日)】 这篇笔记主要涵盖了在11月30日和12月1日期间进行的Python学习内容,其中包括了基本语法、数据结构、控制流程、函数、模块化编程等多个重要知识点。以下是...
【Python项目——Notepad编辑器】是一个利用Python开发的简易文本编辑器,它展示了如何用Python实现一个类似Windows记事本的功能。这个项目是初学者理解Python编程、GUI设计以及文件操作的好例子。通过这个项目,...
【Python项目实战——TodoApp】 在编程世界里,Python是一种广泛应用的高级编程语言,尤其在后端开发领域,它的简洁性和高效性深受开发者喜爱。"每天分享几个python项目"系列旨在通过具体的项目实践来加深对Python...
"Python项目——rocket-flight-simulator"是一个利用Python编程语言实现的简单火箭飞行模拟器。这个项目专注于后端开发,通过代码模拟火箭的飞行过程,包括发射、升空、轨迹计算等关键环节。以下是对该项目涉及的...
通过参与这个项目,学习者可以深入了解Python的函数、条件语句、循环、异常处理、字符串操作等基础语法,以及如何使用面向对象编程设计游戏类和对象。此外,还能锻炼到逻辑思维和调试技巧,对于初学者来说,这是一个...
【Python项目实战——简易图书管理系统实现】 Python是一种广泛使用的高级编程语言,尤其在后端开发领域,它以其简洁明了的语法和丰富的库支持而受到欢迎。本项目“simple-library-system-using-python”就是一个很...
标题 "每天分享几个python项目 —— simple-dice-roll-game-using-python" 暗示我们要讨论的是一个使用Python编程语言实现的简单骰子游戏。在这个项目中,用户可以模拟掷骰子,体验游戏的乐趣,同时也能够学习到...
"每天分享几个python项目 —— rps-game-multiplayer-using-python.zip" 这个标题表明这是一个关于Python编程的项目,具体是多人版的石头、剪刀、布游戏(RPS,Rock-Paper-Scissors)。通过这个项目,我们可以学习到...
在提供的压缩包文件中,"Python——机器学习实战——Logistic回归"可能包含详细的代码示例,展示了如何运用以上概念来构建和评估一个Logistic回归模型。通过学习这个实战案例,你可以更好地理解和应用Logistic回归到...
在这个"Python——机器学习实战——K均值聚类算法分组"的教程中,我们将深入探讨如何使用Python来实现这个算法。 首先,K均值算法的核心思想是通过迭代找到最佳的K个聚类中心,使得每个数据点到其所属类别中心的...
【Python项目实战——ChatApp_0详解】 在Python开发领域,实战项目是提升技能和理解应用的绝佳方式。"ChatApp_0"就是一个基于Python构建的简单聊天应用程序,旨在帮助初学者和进阶者理解如何利用Python进行后端开发...
Python机器学习领域中,数据分析与评分卡建模是至关重要的技术环节,它们在金融、风控、市场营销等多个行业中广泛应用。评分卡是一种将复杂模型结果转化为直观分数的工具,便于业务人员理解和应用。本课件旨在深入...
标题中的“Python爬虫——快速批量抓取表格数据并保存至Excel中”表明这是一个关于使用Python编程语言进行网络爬虫的教程,旨在教授如何高效地抓取网页上的表格数据,并将这些数据存储到Excel文件中。这个过程通常...
【Python项目实战——简易问答系统】 在编程学习过程中,实战项目是提升技能的重要途径,尤其是对于Python这种广泛应用的语言。本项目"simple-quiz-system-project-in-python"旨在帮助初学者和有一定基础的开发者...
学习如何使用`try...except`块捕获和处理这些异常,是提高代码健壮性的重要一环。 8. **测试与调试**:编写游戏后,你需要进行测试以确保其正确运行。了解如何编写单元测试,以及使用调试工具(如Python的pdb模块)...
通过这个项目,学习者可以深入理解Python的数据库操作、GUI编程、文件操作等基础技能,同时提升问题解决和项目组织的能力。实践中遇到的问题和解决过程,都是宝贵的学习经验。如果你是初学者,不妨动手尝试搭建这个...
6. 错误处理和调试:学习如何编写异常处理代码,以及如何使用调试工具查找和修复问题。 通过这个实战项目,不仅能提升Python编程技能,还能加深对后端开发流程的理解,是Python初学者提升技能的好途径。在实践中...
Python的异常处理机制(try-except)可以确保程序在遇到错误时不会崩溃。 6. **人工智能模式** "AI mode"意味着游戏会包含一定的智能化元素。这可能涉及到机器学习或简单的逻辑判断。例如,AI可以分析玩家的猜测...
"python项目实战" 暗示这是一个以实际操作为主的Python编程项目,它将理论知识与实际应用相结合,帮助学习者通过实际的项目经验来提升编程能力。这样的实践项目通常涵盖了从设计到实现的全过程,包括逻辑构建、数据...