`
songzhan
  • 浏览: 248835 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

python 异常处理 (转)

阅读更多

一)捕获异常

格式一:

try:

    <语句>

except <异常1>:

    <语句>

except <异常2>:

    <语句>

else:           如果没有异常,则执行else块中的语句

    <语句>

格式二:

try:

    <语句>

finally:

    <语句>

不管try语句块中是否发生异常,都将执行finally语句块。

[python] view plaincopy
  1. >>> l = [1,2,3]  
  2. >>> l[5]  
  3. Traceback (most recent call last):  
  4.   File "<stdin>", line 1in <module>  
  5. IndexError: list index out of range  
  6. >>> try:  
  7. ...     l[5]  
  8. ...     except:   #此处未使用异常名,表示捕获所有异常  
  9.   File "<stdin>", line 3  
  10.     except:   #此处未使用异常名,表示捕获所有异常  
  11.          ^  
  12. SyntaxError: invalid syntax  
  13. >>> try:  
  14. ...     l[5]  
  15. ... except:    #此处未使用异常名,表示捕获所有异常  
  16. ...     print 'Error'  
  17. ... else:  
  18. ...     print 'No error'  
  19. ...  
  20. Error  
  21. >>> try:  
  22. ...     l[2]  
  23. ... except:  
  24. ...     print 'error'  
  25. ... else:  
  26. ...     print 'No error'  
  27. ...  
  28. 3  
  29. No error  
  30. >>> try:  
  31. ...     l[2]  
  32. ... finally:  
  33. ...     print 'a'  
  34. ...  
  35. 3  
  36. a  
  37. >>> try:  
  38. ...     l[5]  
  39. ... finally:  
  40. ...     print 'a'  
  41. ...  
  42. a  
  43. Traceback (most recent call last):  
  44.   File "<stdin>", line 2in <module>  
  45. IndexError: list index out of range  
  46. >>>  

 

二)处理异常:

AttributeError: 调用不存在的方法引发的异常

EOFError: 遇到文件末尾引发的异常

ImportError: 导入模块出错引发的异常

IndexError: 列表越界引发的异常

IOError: I/O 操作引发的异常,如打开文件出错等

KeyError:使用字典中不存在的关键字引发的异常

NameError:使用不存在的变量名引发的异常

TabError: 语句块缩进不正确引发的异常

ValueError: 搜索列表中不存在的值引发的异常

ZeroDivisionError: 除数为零引发的异常

 

except语句主要有以下几种用法:

except:      捕获所有异常

except  <异常名>:

except  <异常名1,异常名2>:  捕获异常名1或者异常名2

except  <异常名>, <数据>: 捕获指定异常及附加的数据

except  (异常名1,异常名2), <数据>:  捕获异常名1或者异常名2及异常的附加数据

[python] view plaincopy
  1. >>> l = [1,2,]  
  2. >>> try:  
  3.     l[5]  
  4. except IndexError,Error  
  5. SyntaxError: invalid syntax  
  6. >>> l = [1,2,3]  
  7. >>> try:  
  8.     l[5]  
  9. except IndexError,errorMessage:  
  10.     print errorMessage  
  11. else:  
  12.     print 'No Error'  
  13.   
  14.       
  15. list index out of range  
  16. >>> try:  
  17.     l[2]/0  
  18. except (IndexError,ZeroDivisionError): #捕获IndexError异常或者ZeroDivisionError异常  
  19.     print 'Error'  
  20. else:  
  21.     print 'No error'  
  22.   
  23.       
  24. Error  
  25. >>> try:  
  26.     l[5] / 0  
  27. except:  
  28.     print 'Error'  
  29. else:  
  30.     print 'No error'  
  31.   
  32.       
  33. Error  
  34. >>> try:  
  35.     l[2]/0  
  36. except (IndexError,ZeroDivisionError),value:   #捕获IndexError或ZeroDivisionError异常,及其附加数据  
  37.     print value  
  38.   
  39.       
  40. integer division or modulo by zero  
  41. >>>   

 

3)多重异常处理

如果except能够处理该异常,则外围的try语句将不会捕获异常。如果except忽略该异常,则异常将被外围try语句捕获。

[c-sharp] view plaincopy
  1. >>> try:  
  2. ...     try:  
  3. ...             l[5]  
  4. ...     except:  
  5. ...             print 'error1'  
  6. ... except:  
  7. ...     print 'error2'  
  8. ... else:  
  9. ...     print 'no error'  
  10. ...  
  11. error1  
  12. no error  
  13. >>> try:  
  14. ...     try:  
  15. ...             l[1]/0  
  16. ...     except IndexError:  
  17. ...             print 'error1'  
  18. ... except:  
  19. ...     print 'error2'  
  20. ... else:  
  21. ...     print 'no error'  
  22. ...  
  23. error2  
  24. >>> try:  
  25. ...     try:  
  26. ...             l[1]/'s'  
  27. ...     except IndexError:  
  28. ...             print 'error1'  
  29. ... except ZeroDivisionError:  
  30. ...     print 'error2'  
  31. ... else:  
  32. ...     print 'no error'  
  33. ...  
  34. Traceback (most recent call last):  
  35.   File "<stdin>", line 3, in <module>  
  36. TypeError: unsupported operand type(s) for /: 'int' and 'str'  
  37. >>>  

 

二)引发异常:

在python中可以通过使用raise语句手工引发异常。在类中也可以使用raise引发异常,并向异常传递数据。使用raise可以定义新的错误类型,以适应脚本的需要。

 

[python] view plaincopy
  1. >>> class A:  
  2.     def show(self):  
  3.         print 'A'  
  4.   
  5.           
  6. >>> try:  
  7.     raise A  
  8. except A:  
  9.     print 'error'  
  10. else:  
  11.     print 'No error'  
  12.   
  13.       
  14. error  
  15. >>>   

 

自定义异常类:

[python] view plaincopy
  1. >>> class MyError(Exception):  
  2.     def __init__(self,data):     #重载__init__方法  
  3.         self.data = data  
  4.     def __str__(self):  
  5.         return self.data     #重载__str__方法  
  6.   
  7.       
  8. >>> raise MyError,'error'  
  9.   
  10. Traceback (most recent call last):  
  11.   File "<pyshell#110>", line 1in <module>  
  12.     raise MyError,'error'  
  13. MyError: error  
  14. >>> try:  
  15.     raise MyError,'raise MyError'  
  16. except MyError,data:  
  17.     print data  
  18. else:  
  19.     print 'no error'  
  20.   
  21.       
  22. raise MyError  
  23. >>>  

 

原文章地址:http://blog.csdn.net/guopengzhang/article/details/5455341 

 
分享到:
评论

相关推荐

    Python异常处理(课件)

    常见的Python异常包括IndexError(索引超出范围)、TypeError(操作符或函数应用于不兼容的类型)、KeyError(访问字典中不存在的键)、ValueError(值错误,如将非数字字符串转换为整数)、NameError(使用了未定义...

    15.python异常处理1

    "Python 异常处理" Python 是一种高级编程语言,它提供了一个强大的异常处理机制,以便开发者能够更好地处理程序中的错误和异常。在 Python 中,异常是一种特殊的对象,它可以在程序执行过程中抛出,以便通知开发者...

    python的异常处理.rar

    在Python编程语言中,异常处理是一项至关重要的技能,它允许程序员优雅地处理程序运行时可能出现的错误或异常情况。在Python中,异常是通过`try/except`块来捕获和处理的,而`else`和`finally`子句则提供了更高级别...

    Python异常处理详解:掌握错误处理的艺术

    Python提供了一套完整的异常处理机制,允许开发者捕获和处理程序运行时发生的错误。通过合理地使用异常处理,可以提高程序的用户体验和错误容忍度。本文将详细介绍Python中的异常处理机制,包括异常的捕获、处理、抛...

    精通Python异常处理:自定义异常类的定义与实践

    自定义异常类是Python异常处理机制的一个重要组成部分。通过定义自定义异常类,你可以创建更清晰、更易于维护的代码,并提供更详细的错误信息。本文介绍了如何定义自定义异常类,以及如何在程序中使用它们。希望这些...

    python异常处理.html

    什么是异常处理?什么情况下会发生异常?了解常见异常类,异常处理的语句,try ... except,多个except语句和一个except块

    Python:Python异常处理与调试

    ### Python异常处理与调试 #### 一、Python异常基础 ##### 1.1 异常的概念 在Python编程中,**异常**是一种用于处理程序运行时错误的机制。当程序遇到无法处理的情况时(例如除数为零、文件不存在、网络连接失败...

    Python异常和错误实践手册 新手必备

    所谓异常处理,就是指程序在出现问题时依然可以正确的执行剩余的程序,而不会因为异常而终止程序执行。 Python 中引进了很多用来描述和处理异常的类,称为异常类。异常类定义中包含了该类异常的信息和对异常进行...

    Python异常处理.docx

    Python异常处理

    Python-异常处理-教学设计.docx

    问答互动引出学习目标 讲授法 示范练习 随堂报告 Python-异常处理-教学设计全文共6页,当前为第1页。Python-异常处理-教学设计全文共6页,当前为第1页。《异常处理》教学设计 Python-异常处理-教学设计全文共6页,...

    Python异常处理函数和模块学习教案.pptx

    Python异常处理函数和模块学习教案.pptx

    python——异常处理

    刚开始学习python很不容易理解,python在线教学中异常处理

    python异常处理学习.docx

    Python 异常处理学习 Python 异常处理是 Python 编程语言中的一种错误处理机制,用于捕捉和处理程序中出现的异常情况。Python 中的异常处理可以分为两种:try-except 语句和 try-finally 语句。 try-except 语句的...

    知识笔记:Python异常处理(七)

    内容概要:本文详细介绍了 Python 中的异常处理机制,包括什么是异常、为何需要捕获异常以及具体的捕获方法(如捕获常规异常、特定异常、多种异常)、其他异常用法(如打印异常信息、else 子句和 finally 子句)和...

    Python 异常处理、异常名称及实例.docx

    Python异常处理是编程中至关重要的一个部分,它允许程序员优雅地处理程序运行时可能出现的错误情况,而不是让程序突然崩溃。异常是程序在执行过程中遇到的错误,它们是Python对象,表示程序运行中的异常状态。当...

    对于Python异常处理慎用“except:pass”建议

    翻译自StackOverflow中一个关于Python异常处理的问答。 问题:为什么“except:pass”是一个不好的编程习惯? 我时常在StackOverflow上看到有人评论关于except: pass的使用,他们都提到这是一个不好的Python编程习惯...

    Python中的异常处理:自定义异常类详解

    自定义异常类是Python异常处理机制的一个重要组成部分。通过定义和使用自定义异常,开发者可以创建更清晰、更具体的错误处理逻辑。本文介绍了如何定义自定义异常类,如何抛出和捕获它们,以及在使用自定义异常时的...

    python后处理详解:手把手教你用python读数据_python数据处理_python数据_Python数据处理_pytho

    Python是一种广泛应用于数据分析和后处理的强大编程语言,其简洁易读的语法和丰富的库使得处理数据变得简单高效。本资料主要聚焦于如何使用Python进行数据的读取、处理和分析,旨在帮助初学者掌握基本的Python数据...

    如何在Python中处理异常

    Python提供了一套完整的异常处理机制,使得开发者可以捕获并处理程序运行时出现的错误。本文将详细介绍Python中的异常处理机制,包括异常的捕获、处理和抛出。 异常处理是编程中一个重要的概念,它允许程序在发生...

Global site tag (gtag.js) - Google Analytics