python try/except/finally

原创 2013年07月16日 15:47:48

稍微总结一下,否则总是忘。

x = 'abc'
def fetcher(obj, index):
    return obj[index]

fetcher(x, 4)

输出:

  File "test.py", line 6, in <module>
    fetcher(x, 4)
  File "test.py", line 4, in fetcher
    return obj[index]
IndexError: string index out of range

第一: try不仅捕获异常,而且会恢复执行
def catcher():
    try:
        fetcher(x, 4)
    except:
        print "got exception"
    print "continuing"
输出:
got exception
continuing

第二:无论try是否发生异常,finally总会执行
def catcher():
    try:
        fetcher(x, 4)
    finally:
        print 'after fecth'
输出:
after fecth
Traceback (most recent call last):
  File "test.py", line 55, in <module>
    catcher()
  File "test.py", line 12, in catcher
    fetcher(x, 4)
  File "test.py", line 4, in fetcher
    return obj[index]
IndexError: string index out of range

第三:try无异常,才会执行else
def catcher():
    try:
        fetcher(x, 4)
    except:
        print "got exception"
    else:
        print "not exception"
输出:
got exception
def catcher():
    try:
        fetcher(x, 2)
    except:
        print "got exception"
    else:
        print "not exception"
输出:
not exception
else作用:没有else语句,当执行完try语句后,无法知道是没有发生异常,还是发生了异常并被处理过了。通过else可以清楚的区分开。

第四:利用raise传递异常

def catcher():
    try:
        fetcher(x, 4)
    except:
        print "got exception"
        raise
输出:
got exception
Traceback (most recent call last):
  File "test.py", line 37, in <module>
    catcher()
  File "test.py", line 22, in catcher
    fetcher(x, 4)
  File "test.py", line 4, in fetcher
    return obj[index]
IndexError: string index out of range
raise语句不包括异常名称或额外资料时,会重新引发当前异常。如果希望捕获处理一个异常,而又不希望

异常在程序代码中消失,可以通过raise重新引发该异常。


第五:except(name1, name2)

def catcher():
    try:
        fetcher(x, 4)
    except(TypeError, IndexError):
        print "got exception"
    else:
        print "not exception"
捕获列表列出的异常,进行处理。若except后无任何参数,则捕获所有异常。

def catcher():
    try:
        fetcher(x, 4)
    except:
        print "got exception"


python try..except..finally 实验【细节决定成败】

群里朋友今天问了个问题,当时自己没注意,简单跑了下代码,发现真的很奇妙 【1】 情况1: try: global r print 'try...' r = 10 / 0 ...
  • u010258605
  • u010258605
  • 2015年02月25日 14:22
  • 4983

嵌入式 python异常except语句用法与引发异常

except: #捕获所有异常 except: : #捕获指定异常 except: except:,:捕获指定异常及其附加的数据 except:::捕获异常名1或者异常名2,及附加的数据库 常用异...
  • skdkjxy
  • skdkjxy
  • 2013年12月02日 14:40
  • 2504

python的try语句

python 的异常 2010-11-03 22:36:36 python的try语句有两种风格 一:种是处理异常(try/except/else) 二:种是无论是否发生异...
  • SdustLiYang
  • SdustLiYang
  • 2014年04月08日 08:38
  • 68649

python try except else finally 执行顺序详细分析

学习python或者其他有异常控制的编程语言, 大家很有可能说try except finally(try catch finally)的执行很简单,无非就是有异常的话执行except, finall...
  • peterlin666
  • peterlin666
  • 2014年07月11日 10:42
  • 499

[代码笔记] python之 异常处理 try except else finally

#!/usr/bin/python3 #文件名: demo_exception.py # python之异常处理while True : try: number=int(inp...
  • guddqs
  • guddqs
  • 2016年12月21日 07:40
  • 282

python中 try、except、finally 的执行顺序

本文转自CSDN,作者不详。 原文链接如下: http://blog.csdn.net/u010159842/article/details/54924940 def test1(): ...
  • LucyGill
  • LucyGill
  • 2018年01月10日 19:30
  • 13

python中 try、except、finally 的执行顺序

def test1(): try: print('to do stuff') raise Exception('hehe') print('to return...
  • moonhillcity
  • moonhillcity
  • 2016年08月12日 17:20
  • 147

Python中try...except...finally的理解

python中无论文件是否正常打开,try...finally...都能保证正常关闭,其用法请点击本博客...
  • Gamer_gyt
  • Gamer_gyt
  • 2015年01月05日 23:24
  • 3871

Syntax Error v.s. Exception, (try, except, finally) - Python

Syntax Error VS. Exception Syntax Error 是语法错误,有可能是出现了typo比如request写成了reqeust,或者python 2,3的不兼容导致, 比如在...
  • NaomiEdna
  • NaomiEdna
  • 2016年06月17日 09:58
  • 395

【python】错误 调试 测试try except finally raise

错误:有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的;有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符...
  • u010141025
  • u010141025
  • 2014年12月16日 13:53
  • 1034
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python try/except/finally
举报原因:
原因补充:

(最多只允许输入30个字)