Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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

The tx in the parenthesis is a raw transaction that is about to be broadcast to the network. This was the result -

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

Thanks in advance :)

EDIT:

I originally shortened the error for the sake of the forum but i have updated it with the full error output now. Thanks again :)

EDIT2:

I just saw that there is a raise in the try statement which I have added to the main post above. Usually the error reported by this is that 'raise cannot be None' or something to that effect but that is not what I'm seeing this time. I'll mention in though i case it is reinvent in some way.

like image 784
derrend Avatar asked Jun 08 '26 00:06

derrend


1 Answers

raise on its own re-raises a caught exception, preserving its stack trace. If you don’t want the exception to be propagated, remove the raise.

What you describe in your question only occurs when using a bare raise when there is no exception being handled, and only in Python 2:

Usually the error reported by this is that 'raise cannot be None' or something to that effect

the exact error being:

TypeError: exceptions must be old-style classes or derived from BaseException, not NoneTyp e

. In Python 3, it’s more specific:

RuntimeError: No active exception to reraise

… but again, that should never apply in an except block.

like image 176
Ry- Avatar answered Jun 10 '26 09:06

Ry-



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!