`

Python3.0(Py3K)异常处理机制

阅读更多

 与许多面向对象一样,python具有异常处理,通过使用try...except来处理异常,而通过raise来引发异常。

异常在 Python 中无处不在;实际上在标准 Python 库中的每个模块都使用了它们,并且 Python 自已会在许多不同的情况下引发它们。例如:

  • 使用不存在的字典关键字 将引发 KeyError 异常。
  • 搜索列表中不存在的值 将引发 ValueError 异常。
  • 调用不存在的方法 将引发 AttributeError 异常。
  • 引用不存在的变量 将引发 NameError 异常。
  • 未强制转换就混用数据类型 将引发 TypeError 异常。

        然而,一个异常不一定会引起程序的完全崩溃。当异常引发时,可以被 处理 掉。有时候一个异常实际是因为代码中的 bug (比如使用一个不存在的变量),但是许多时候,一个异常是可以预计的。如果你打开一个文件,它可能不存在。如果你连接一个数据库,它可能不可连接或没有访问所需的正确的安全证书。如果知道一行代码可能会引发异常,你应该使用一个 try...except 块来处理异常。下面是一个异常处理的例子:

 

Python代码 复制代码
  1. try:   
  2.     fsock = open("/notthere")          
  3. except IOError:                        
  4.         print "The file does not exist, exiting gracefully"  
  5. 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 异常。可以使用这种方法来定义多级别的功能,依靠在运行时哪个模块是有效的,或支持多种平台 (即平台特定代码被分离到不同的模块中)。例如:

 

Python代码 复制代码
  1. try:   
  2.     import termios, TERMIOS                        
  3. except ImportError:   
  4.     try:   
  5.         import msvcrt                              
  6.     except ImportError:   
  7.         try:   
  8.             from EasyDialogs import AskPassword    
  9.         except ImportError:   
  10.             getpass = default_getpass              
  11.         else:                                      
  12.             getpass = AskPassword   
  13.     else:   
  14.         getpass = win_getpass   
  15.  else:   
  16.     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的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。 下面给大家分享示例代码,给大家介绍python ...

    Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言 Python 的设计具有很强的可读性,相比其他

    Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的...Python 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。 Pyt

    Python2.x与3.x版本有哪些区别

    Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法...

    python有几个版本

    Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法在...

    Python2.x与Python3.x的区别

    Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都...

    快速学习-Python3安装

    Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法...

    python3.4.4 64位

    用于python3.4的版本安装包。Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

    Python2.x与3​​.x版本区别

    Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法...

    python离线安装所需所有资源(python3.6,pip,gcc)

    gcc.tar get-pip.py ...Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。

    python3 拼接字符串的7种方法

    Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。 1、直接通过(+)操作符拼接 >>> 'Hello' + '...

    python3基础脑图

    Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。 本文当为python3基础的思维导图

    Python3.7.3(32bit)

    最新的Python3.7版本。 Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

    Python 3.x 新特性及10大变化

    Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。许多针对早期Python版本设计的程序都无法在Pyt

    python-3.8.3-win64.rar

    此版本是官网win64版本,请放心下载。 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。

    Python3教程基础:简介.pdf

    Python3教程基础:简介 Python 简介 版本历史 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是⼀个较⼤的升级。为了不带⼊过多的累 赘,Python 3.0 在设计的时候没有考虑向...

    python菜鸟教程

    Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。 Python 介绍及安装教程我们在Python 2.X版本...

    python学习笔记.docx

    Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。

    notepad++.exe

    Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

    Machine-Learning-master-Jack-Cui.zip

    Python3《机器学习实战》学习笔记 ( 代码打包...Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

Global site tag (gtag.js) - Google Analytics