2015-11-06 102 views
0

我有一个自定义InvalidError,我想我的函数处理两种错误:一个是InvalidError,另一个是所有其他错误。我试着这样说:python停止异常通过

try: 
    a = someFunc() 
    if a: 
     # do things 
    else: 
     raise InvalidError('Invalid Error!') 
except InvalidError as e: 
     return "Invalid" 
except Exception as ex: 
     return "Other" 

,但似乎我会得到Other两种方式。我如何以正确的方式实现我的功能?

+0

是否定义为InvalidError扩展异常类的类? –

+0

[在Python中手动引发(抛出)异常]的可能重复(http://stackoverflow.com/questions/2052390/manually-raising-throwing-an-exception-in-python) – JasmineOT

回答

0

你能告诉我们你是如何创建InvalidError类的吗?这是工作。

class InvalidError(Exception): 
    pass 

>>> try: 
... raise InvalidError("dsfsdf") 
... except InvalidError as my_exception: 
... print "yes" 
... except Exception as e: 
... print "No" 
... 
yes 
0

这样做的一种方法是创建一个上下文管理器类。在竞争管理器中,您可以忽略任何您喜欢的错误,例如

例如,

class ctx_mgr:

def __enter__(self): 
    cm = object() 
    return cm  

def __exit__(self, exc_type, exc_value, exc_tb): 
    return (exc_type == InvalidError) 

with ctx_mgr: a = someFunc()