导入时的Python异常处理

时间:2011-09-25 17:54:35

标签: python exception import

第一档:

class E1Exception (Exception):

    def __init__(self,x):
        self.x=x


    def raiser (self,x):
        self.x=x
        if x=='So sue me':
            raise E1Exception('New Yorker')
        else:
            try:
                number = (int)(x)
                pass
            except ValueError:
                raise ValueError ()

第二档:

import e1a
from e1a import *


def reporter (f,x):

    try:
        print f(x)
        return ('no problem')
    except ValueError:
        return ('Value')
    except E1Exception:
        return ('E1')
    else:
        return ('generic')

问题1:

函数提升者是否必须是静态的才能在第二个文件中使用?

问题是E1Exception从来没有找到任何解决方案吗?

2 个答案:

答案 0 :(得分:1)

问题是错误永远不会“提升”

http://docs.python.org/tutorial/errors.html

你必须在某个x值的某处写raise E1Exception(x)

答案 1 :(得分:0)

  

函数提升者是否必须是静态的才能在中使用   第二档?

Python没有“静态”的概念。 “静态”是什么意思?

另外,我认为你没有意识到(int)(x)正在做什么。在我看来,你正试图将x转换为int。虽然它有效,但这只是巧合。你真正在做的是调用int上的x函数。所以这相当于

number = int(x)

这与你的问题无关,但我认为我应该指出这一点,万一有人会感到困惑。