簡體   English   中英

為什么這個`try`語句不能捕獲這個`CannotSendRequest`錯誤? 蟒蛇

[英]Why doesn't this `try` statement catch this `CannotSendRequest` error? python

try:
    serial_tx = bcl.sendrawtransaction(tx)
except:
    raise
    ''other stuff''

括號中的tx是即將廣播到網絡的原始事務。 這是結果 -

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

提前致謝 :)

編輯:

我最初為了論壇而縮短了錯誤,但我現在已經用完整的錯誤輸出更新了它。 再次感謝 :)

EDIT2:

我剛剛看到我在上面的主要帖子中添加的try語句中有一個加注。 通常由此報告的錯誤是'加注不能是無'或者那種效果,但這不是我現在看到的。 我會提到雖然我的情況是它在某種程度上重新發明。

raise自身的重新提出了一個捕獲的異常,保持其堆棧跟蹤。 如果您不希望傳播異常,請刪除raise

您在問題中描述的內容僅在沒有處理異常時使用裸raise時發生,並且僅在Python 2中:

通常,由此報告的錯誤是“加注不能為無”或類似的結果

確切的錯誤是:

TypeError:exception必須是舊式類或派生自BaseException,而不是NoneTyp e

在Python 3中,它更具體:

RuntimeError:沒有活動的異常來重新加載

......但是,再次,這應該永遠不適用於一個except塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM