与许多面向对象一样,python具有异常处理,通过使用try...except来处理异常,而通过raise来引发异常。
异常在 Python 中无处不在;实际上在标准 Python 库中的每个模块都使用了它们,并且 Python 自已会在许多不同的情况下引发它们。例如:
- 使用不存在的字典关键字 将引发 KeyError 异常。
- 搜索列表中不存在的值 将引发 ValueError 异常。
- 调用不存在的方法 将引发 AttributeError 异常。
- 引用不存在的变量 将引发 NameError 异常。
- 未强制转换就混用数据类型 将引发 TypeError 异常。
然而,一个异常不一定会引起程序的完全崩溃。当异常引发时,可以被 处理 掉。有时候一个异常实际是因为代码中的 bug (比如使用一个不存在的变量),但是许多时候,一个异常是可以预计的。如果你打开一个文件,它可能不存在。如果你连接一个数据库,它可能不可连接或没有访问所需的正确的安全证书。如果知道一行代码可能会引发异常,你应该使用一个 try...except 块来处理异常。下面是一个异常处理的例子:
- try:
- fsock = open("/notthere")
- except IOError:
- print "The file does not exist, exiting gracefully"
- print "This line will always print"
try:
fsock = open("/notthere")
except IOError:
print "The file does not exist, exiting gracefully"
print "This line will always print"
除了处理实际的错误条件之外,对于异常还有许多其它的用处。在标准 Python 库中一个普通的用法就是试着导入一个模块,然后检查是否它能使用。导入一个并不存在的模块将引发一个 ImportError 异常。可以使用这种方法来定义多级别的功能,依靠在运行时哪个模块是有效的,或支持多种平台 (即平台特定代码被分离到不同的模块中)。例如:
- try:
- import termios, TERMIOS
- except ImportError:
- try:
- import msvcrt
- except ImportError:
- try:
- from EasyDialogs import AskPassword
- except ImportError:
- getpass = default_getpass
- else:
- getpass = AskPassword
- else:
- getpass = win_getpass
- else:
- getpass = unix_getpass
try:
import termios, TERMIOS
except ImportError:
try:
import msvcrt
except ImportError:
try:
from EasyDialogs import AskPassword
except ImportError:
getpass = default_getpass
else:
getpass = AskPassword
else:
getpass = win_getpass
else:
getpass = unix_getpass
要是想了解更多的关于异常处理的东西,可以阅读
Python Library Reference。
分享到:
相关推荐
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。 下面给大家分享示例代码,给大家介绍python ...
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法...
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法在...
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都...
gcc.tar get-pip.py ...Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。
用于python3.4的版本安装包。Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法...
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。 1、直接通过(+)操作符拼接 >>> 'Hello' + '...
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。 本文当为python3基础的思维导图
最新的Python3.7版本。 Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。许多针对早期Python版本设计的程序都无法在Pyt
此版本是官网win64版本,请放心下载。 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。
Python 3.0是Python的一个重大更新,有时也称为Python 3000或Py3k。这个版本引入了许多新特性,如改进的字符串处理、新的异常处理机制以及对Unicode的全面支持。然而,Python 3.0并不完全向后兼容2.x系列,这意味着...
Python 3.0,也称为Python 3000或Py3k,是一个重大的版本更新,引入了新的语法特性,如统一的字符串表示、print函数替代print语句,以及许多其他改进。由于设计上的变化,Python 3不完全兼容旧的2.x版本。 **五、...
Python的3.0版本,也就是Python 3000,被简称为Py3k。Python 3相较于早期版本做了较大的改变,最显著的改变之一就是不考虑向下兼容性,也就是说,Python 3的代码不能在Python 2.x版本中运行,而Python 2.x的代码也不...
Python 3 是 Python 语言的第三个主要版本,也被称为 Python 3000 或 Py3k。相比之下,Python 3.0 是一个较大的升级版本,为了不带入过多的累赘,没有考虑向下兼容。 Python 介绍 Python 是一种高级的解释性语言,...
Python3.0,也被称为Python3000或Py3k,是Python语言的一个重要转折点。与早期版本相比,Python3在设计时并未考虑向下兼容。这意味着,为了确保新的特性和改进,Python3的代码可能无法在Python2.x版本上运行。因此,...
Python 3.0,也称为Python 3000或简称Py3k,是一次重大的升级,引入了许多重要的改变。为了确保Python能够更好地适应现代计算的需求,并解决早期版本中的一些问题,Python 3.0的设计者们做出了许多关键性的决策,...