`
f002489
  • 浏览: 273073 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Python异常处理

阅读更多

http://www.cnblogs.com/phoebus0501/archive/2011/01/18/1938746.html

 

try    捕获由Python或程序本身引发的异常
raise    手工地引发一个异常

为什么要使用异常
1、错误处理,当python检查以程序运行时的错误就引发异常,你可以在程序里捕捉和处理这些错误,或者忽略它们。
2、事件通知,异常也可以作为某种条件的信号,而不需要在程序里传送结果标志或显式地测试它们。
3、特殊情形处理,有时有些情况是很少发生的,把相应的处理代码改为异常处理会更好一些。
4、奇特的控制流,异常是一个高层次的"goto",可以把它作为实现奇特的控制流的基础。如反向跟踪等。

异常的基础知识
python的try语句有两种风格---一种是处理异常(try/except/else),一种是无论是否发生异常都将执行最后的代码(try/finally)。


try/except/else风格
try:
    <语句>        #运行别的代码
except <名字>:        
    <语句>        #如果在try部份引发了'name'异常
except <名字>,<数据>:
    <语句>        #如果引发了'name'异常,获得附加的数据
else:
    <语句>        #如果没有异常发生
try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。
1、如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
2、如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
3、如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

try/finally风格
try:
    <语句>
finally:
    <语句>    #退出try时总会执行
raise
python总会执行finally子句,无论try子句执行时是否发一异常。
1、如果没有发生异常,python运行try子句,然后是finally子句,然后继续。
2、如果在try子句发生了异常,python就会回来执行finally子句,然后把异常递交给上层try,控制流不会通过整个try语句。
当你想无论是否发生异常都确保执行某些代码时,try/finally是有用的。

raise
要引发异常,你需要写raise语句,它的形式很简单,raise后面跟着要引发的异常。
raise <name>    #手工地引发异常
raise <name>,<data>    #传递一个附加的数据
什么是异常名(name)呢?它也许是内置作用域内的内置异常(如IndexError),或者是你程序中的任意字符串对象。

第一个例子:
缺省行为:显示错误信息。
$ python test.py
Traceback (innermost last):
  File "test.py", line 3, in ?
    a = 1 /0
ZeroDivisionError: integer division or modulo
当一个未捕获的异常发生时,python将结束程序并打印一个堆栈跟踪信息,以及异常名和附加信息。

用try捕获内置异常
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
#!/usr/bin/python
try:
        a = 1 /0
        print a
except:
        print 'i get the error'
当程序运行是会捕获一个错误并执行except后面的代码。

异常的惯用法
异常并不总是坏事情,例如,文件对象的read方法在文件尾时返回一个空串,python也提供一个内置函数raw_input,它从标准输入流读入。与read方法不同,当遇到文件尾时,raw_input()引发内置的EOFError错误。所以可以这样用:
while 1:
    try:
        line = raw_input()        #从stdin读入行
    except EOFError:
        break                #在文件末尾退出循环
    esle:
    其它处理代码

用异常传递成功的信号
Found = 'item found'
def search():
    引发或返回Found
try:
    search()
except Found:
    successful
else:
    fail

可以使用try来调试代码,你可以用自已的异常处理替换python缺省的异常处理。把整个程序封装在一个外部try里面,你可以捕获运行时的任何异常。

异常捕获模式
try语句子句形式表
except:            捕获所有异常
except name:        只捕获特定的异常
except name,value:    捕获异常和它的附加数据 (?实例)
except (name1,name2):    捕获任何列出的异常
else:            如果没有异常
finally:        总是执行

捕获多个异常中的一个,python从上到下地查看except子句,括号里列出多个异常与列出单独的异常是一样的,只是更简洁一些。

运行时嵌套的异常,python会匹配最近的except。

finally子句无论如何都会执行,所以它是做清除动作的好地方,如关闭一个文件的操作。

分享到:
评论

相关推荐

    Python异常处理(课件)

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

    15.python异常处理1

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

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

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

    Python:Python异常处理与调试

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

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

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

    Python异常处理.docx

    Python异常处理

    python异常处理学习.docx

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

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

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

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

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

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

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

    完整图文版教程 优质的Python基础入门教程 讲解清晰 PPT课件 15、Python异常处理 (共30页).rar

    Python异常处理是编程中至关重要的一个环节,它允许程序员优雅地处理程序运行时可能出现的错误,确保程序在遇到问题时不会突然崩溃。本教程通过30页的PPT课件,详细介绍了Python中的异常处理机制,帮助初学者掌握这...

    完整图文版教程 优质的Python基础入门教程 讲解清晰 PPT课件 15、Python异常处理 (共30页).pptx

    Python异常处理是编程中至关重要的一个部分,它允许程序员优雅地处理程序运行时可能出现的错误,防止程序因未预期的状况而突然终止。在Python中,异常是通过异常对象来表示的,这些对象通常是在遇到错误时自动创建的...

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

    Python异常处理是编程中至关重要的一个部分,它允许程序员优雅地处理程序运行时可能出现的错误。在Python中,异常是程序执行过程中导致流程中断的事件。这些异常可能是由于语法错误、除以零、文件未找到等操作引起的...

    python异常处理(csdn)————程序.pdf

    Python 异常处理是编程中不可或缺的一部分,它允许我们在代码执行过程中捕获并处理可能出现的错误,从而确保程序的稳定性和健壮性。本文将详细解释如何使用 `try...except` 结构,以及如何通过 `else` 和 `finally` ...

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

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

    Python 异常处理的实例详解

    ### Python异常处理详解 #### 一、Python异常处理概述 Python是一种高级编程语言,它具有丰富的面向对象特性,包括强大的异常处理机制。异常处理在Python中是非常重要的一个方面,它可以帮助程序员有效地处理程序...

    Python异常处理(markdown文档教程).md

    Python异常处理(markdown文档教程).md

    python异常处理.html

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

Global site tag (gtag.js) - Google Analytics