呃这里代表什么?

时间:2011-10-09 06:36:11

标签: python

try: 
    os.execvp('sqlite3', args) 
except OSError, er: 
    if er.errno == 2: #file not found 
        raise OSError, _("sqlite3 executable not found. Is it installed?") 
    else: 
        raise 
except: 
    raise 

在上面的代码中,except语句会捕获OSError,但er变量代表什么?

编辑:这个只有OSError除外;有没有办法除了任何错误并获得它的异常对象?

4 个答案:

答案 0 :(得分:5)

正如其他人所说,er是异常的实例化形式,OSError

如果它有用,可以使用as关键字,这是一种替代的,更明确的语法:

try: 
    os.execvp('sqlite3', args) 
except OSError as er: 
    if er.errno == 2: #file not found 
        raise OSError(_("sqlite3 executable not found. Is it installed?"))
    else: 
        raise 
except: 
        raise 

对我来说,er将是OSError

顺便说一句,在Python 2.6中添加了as er语法。

答案 1 :(得分:2)

erexcept子句捕获的实际异常对象。

答案 2 :(得分:1)

er是异常对象本身。

答案 3 :(得分:1)

看起来像是一个异常对象(类型OSError也看起来像是保存错误。 ER可能代表错误。