当我的一个依赖项抛出一个特定的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的东西。所以我打算进行一次单元测试,以保护自己免受这种情况的影响。
答案 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>