为什么';这个'try'语句不能捕获这个'CannotSendRequest'错误吗?python

为什么';这个'try'语句不能捕获这个'CannotSendRequest'错误吗?python,python,try-catch,bitcoin,httplib,Python,Try Catch,Bitcoin,Httplib,括号中的tx是将要广播到网络的原始事务。 这就是结果- try: serial_tx = bcl.sendrawtransaction(tx) except: raise ''other stuff'' 提前感谢:) 编辑: 为了论坛的缘故,我最初缩短了错误,但现在我用完整的错误输出对其进行了更新。再次感谢:) 编辑2: 我刚刚看到我在上面的主要帖子中添加的try声明中有一个提升。通常这篇报道的错误是“加薪不可能没有”或类似的东西,但这不是我这次看到的。在我的例子中,我

括号中的
tx
是将要广播到网络的原始事务。 这就是结果-

try:
    serial_tx = bcl.sendrawtransaction(tx)
except:
    raise
    ''other stuff''
提前感谢:)

编辑:

为了论坛的缘故,我最初缩短了错误,但现在我用完整的错误输出对其进行了更新。再次感谢:)

编辑2:


我刚刚看到我在上面的主要帖子中添加的try声明中有一个提升。通常这篇报道的错误是“加薪不可能没有”或类似的东西,但这不是我这次看到的。在我的例子中,我会提到它在某种程度上是重新发明的。

raise
自身会重新引发捕获的异常,保留其堆栈跟踪。如果不希望传播异常,请删除
raise

您在问题中所描述的内容仅在使用裸
raise
时发生,并且没有处理异常,并且仅在Python 2中:

通常情况下,报告的错误是“raise不能为None”或类似的内容

确切的错误是:

TypeError:异常必须是旧式类或从BaseException派生的,而不是非典型的 e

。在Python 3中,它更具体:

RuntimeError:没有活动异常可重新启动


…但同样,除了块之外,这不应该应用于
块。

根据回溯,在
sendrawtransaction
中似乎没有实际发生错误。另外,您应该使用除CannotSendRequest之外的
,而不是捕获所有内容。@声音防御感谢您的输入,我正在将失败的事务记录到数据库中以供以后参考,这就是我捕获所有内容的原因。不是我所知道的最优雅的代码;)哇,谢谢你提供的信息,我一点都不知道
Internal Server Error: /blockscript/0d82f8c8f85ed2b8226dd98ad967c81b00000000000074cfc81b5e3cfdef19975408ef2c2d9976160c69dd2057505d5a/
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 114, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/media/derrend/data/Development/projectone/pro1/views.py", line 1012, in blockscript
    process_rec(tx, L_dct=L_dct, W_dct=W_dct)
  File "/media/derrend/data/Development/projectone/pro1/views.py", line 494, in process_rec
    serial_tx = bcl.sendrawtransaction(tx)
  File "/usr/local/lib/python2.7/dist-packages/python_bitcoinlib-0.2_SNAPSHOT-py2.7.egg/bitcoin/rpc.py", line 403, in sendrawtransaction
    r = self._call('sendrawtransaction', hextx)
  File "/usr/local/lib/python2.7/dist-packages/python_bitcoinlib-0.2_SNAPSHOT-py2.7.egg/bitcoin/rpc.py", line 163, in _call
    'Content-type': 'application/json'})
  File "/usr/lib/python2.7/httplib.py", line 973, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 1001, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/lib/python2.7/httplib.py", line 871, in putrequest
    raise CannotSendRequest()
CannotSendRequest