2013-06-03 15 views
2

我正在编写一个API,并且我使用了一些托管属性,因为它们是从网络中检索的,因此它可能会生成错误。检查函数是否在try子句中调用

在getter-setter内部,我想检查API用户是否在属性get/set周围使用了try子句。

def getter_or_setter(): 
    try: 
     network_operations() 
    except: 
     if called_inside_try(): 
      raise 
     else: 
      log.error('error string') 
+4

所以你的API只有在调用者“准备好”处理它时才引发?这是糟糕的API设计。 –

+1

我不认为这会是很好的设计。但是,请参阅[Python:检查异常引发的位置](http://stackoverflow.com/q/4298108/222914) –

回答

4

第一件事:我没有回答你的问题,并且不知道,如果它实际上能够确定,如果你的功能是从一个try块:)

如此说来叫,但我确信,这是一件奇怪的事情。您应该根据显式参数或调用您的函数的替代方式,决定抛出异常或向提示方无提示失败。

举个例子,我相信你应该考虑如何处理dict缺少键:

  • 当使用d['missing'],在字典提出了一个KeyError
  • 调用者可以选择使用d.get('missing')避免异常。
相关问题