捕获Python中的特定错误消息

时间:2017-07-04 16:03:54

标签: python python-3.x error-handling scipy try-except

当我的一个依赖项抛出一个特定的ValueError并以某种方式处理它时,我需要捕获,否则重新引发错误。 我没有找到任何最近以符合Python 3标准的方式处理此问题的问题,并且处理区分错误的唯一方法是字符串消息。

这篇文章可能是最接近的:Python: Catching specific exception

这样的事情 - catch specific HTTP error in python - 无法正常工作,因为我没有使用依赖关系来提供像HTTP错误那样的特定代码。

这是我的尝试:

try:
    spect, freq_bins, time_bins = spect_maker.make(syl_audio,
                                                   self.sampFreq)
except ValueError as err:
    if str(err) == 'window is longer than input signal':
        warnings.warn('Segment {0} in {1} with label {2} '
                      'not long enough for window function'
                      ' set with current spect_params.\n'
                      'spect will be set to nan.')
        spect, freq_bins, time_bins = (np.nan,
                                       np.nan,
                                       np.nan)
    else:
        raise

如果重要的话,依赖性很小,我需要在频谱图因某个特定原因失败时捕获(我在拍摄频谱图的时间段比窗口函数短)。

我意识到我的方法很脆弱,因为它取决于错误字符串不会改变,但错误字符串是唯一可以区别于同一函数返回的其他ValueErrors的东西。所以我打算进行一次单元测试,以保护自己免受这种情况的影响。

1 个答案:

答案 0 :(得分:0)

好的,基于其他人的评论,我猜它应该是这样的:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <ns1:PDM xmlns:ns1="http://example.com">
   <ns1:ds><Details ID="3453636" Add=""/></ns1:ds>
  </ns1:PDM>
 </soapenv:Body>
</soapenv:Envelope>