質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

3642閲覧

python3 明記したエラー文がキャッチされない

comet0310

総合スコア59

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/06/26 02:43

編集2019/06/26 02:46

プログラム動作中にNetworkErrorが発生したのですがこれをキャッチしようとしてexceptに明記したのですがそのようなエラーは定義されていないと言われました。
エラー名が間違っているのでしょうか。
ConnectionError:やRemoteDisconnected:も表示されているのですがこちらもキャッチした方が良いのでしょうか。
調べたのですが似たような事案を見つけられず困っております。
お知恵を貸してください。よろしくお願いします。

python3

1import ccxt 2import traceback 3import time 4 5mex=ccxt.bitmex() 6fly=ccxt.bitflyer() 7 8 9while(True): 10 start=time.time() 11 try: 12 mex_ticker=mex.fetch_ticker(symbol='BTC/USD') 13 fly_ticker=fly.fetch_ticker(symbol='BTC/JPY') 14 except NetworkError: 15 time.sleep(3) 16 traceback.print_exc() 17 continue 18 except: 19 traceback.print_exc()
--------------------------------------------------------------------------- RemoteDisconnected Traceback (most recent call last) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw) 600 body=body, headers=headers, --> 601 chunked=chunked) 602 386 # otherwise it looks like a programming error was the cause. --> 387 six.raise_from(e, None) 388 except (SocketTimeout, BaseSSLError, SocketError) as e: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/packages/six.py in raise_from(value, from_value) 382 try: --> 383 httplib_response = conn.getresponse() 384 except Exception as e: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py in getresponse(self) 1330 try: -> 1331 response.begin() 1332 except ConnectionError: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py in begin(self) 296 while True: --> 297 version, status, reason = self._read_status() 298 if status != CONTINUE: 265 # sending a valid response. --> 266 raise RemoteDisconnected("Remote end closed connection without" 267 " response") RemoteDisconnected: Remote end closed connection without response During handling of the above exception, another exception occurred: ProtocolError Traceback (most recent call last) 439 retries=self.max_retries, --> 440 timeout=timeout 441 ) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw) 638 retries = retries.increment(method, url, error=e, _pool=self, --> 639 _stacktrace=sys.exc_info()[2]) 640 retries.sleep() 356 if read is False or not self._is_method_retryable(method): --> 357 raise six.reraise(type(error), error, _stacktrace) 358 elif read is not None: 684 if value.__traceback__ is not tb: --> 685 raise value.with_traceback(tb) 686 raise value 600 body=body, headers=headers, --> 601 chunked=chunked) 602 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/connectionpool.py in _make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw) 386 # otherwise it looks like a programming error was the cause. --> 387 six.raise_from(e, None) 388 except (SocketTimeout, BaseSSLError, SocketError) as e: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/packages/six.py in raise_from(value, from_value) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/urllib3/connectionpool.py in _make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw) 382 try: --> 383 httplib_response = conn.getresponse() 384 except Exception as e: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py in getresponse(self) 1330 try: -> 1331 response.begin() 1332 except ConnectionError: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py in begin(self) 296 while True: --> 297 version, status, reason = self._read_status() 298 if status != CONTINUE: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py in _read_status(self) 265 # sending a valid response. --> 266 raise RemoteDisconnected("Remote end closed connection without" 267 " response") ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',)) During handling of the above exception, another exception occurred: ConnectionError Traceback (most recent call last) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ccxt/base/exchange.py in fetch(self, url, method, headers, body) 422 timeout=int(self.timeout / 1000), --> 423 proxies=self.proxies 424 ) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json) 507 send_kwargs.update(settings) --> 508 resp = self.send(prep, **send_kwargs) 509 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py in send(self, request, **kwargs) 617 # Send the request --> 618 r = adapter.send(request, **kwargs) 619 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/adapters.py in send(self, request, stream, timeout, verify, cert, proxies) 489 except (ProtocolError, socket.error) as err: --> 490 raise ConnectionError(err, request=request) 491 ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',)) During handling of the above exception, another exception occurred: NetworkError Traceback (most recent call last) <ipython-input-360-b459938ea1de> in <module>() 22 mex_ticker=mex.fetch_ticker(symbol='BTC/USD') ---> 23 fly_ticker=fly.fetch_ticker(symbol='BTC/JPY') 24 except NetworkError: 167 'product_code': self.market_id(symbol), --> 168 }, params)) 169 timestamp = self.parse8601(ticker['timestamp']) /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ccxt/base/exchange.py in request(self, path, api, method, params, headers, body) 361 def request(self, path, api='public', method='GET', params={}, headers=None, body=None): --> 362 return self.fetch2(path, api, method, params, headers, body) 363 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ccxt/base/exchange.py in fetch2(self, path, api, method, params, headers, body) 358 request = self.sign(path, api, method, params, headers, body) --> 359 return self.fetch(request['url'], request['method'], request['headers'], request['body']) 360 /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ccxt/base/exchange.py in fetch(self, url, method, headers, body) 452 if ('ECONNRESET' in error_string) or ('Connection aborted.' in error_string): --> 453 self.raise_error(NetworkError, url, method, e) 454 else: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ccxt/base/exchange.py in raise_error(self, exception_type, url, method, error, details) 343 output = ' '.join([self.id] + [var for var in (url, method, error, details) if var is not None]) --> 344 raise exception_type(output) 345 NetworkError: bitflyer https://api.bitflyer.jp/v1/getticker?product_code=BTC_JPY GET ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',)) During handling of the above exception, another exception occurred: NameError Traceback (most recent call last) <ipython-input-360-b459938ea1de> in <module>() 22 mex_ticker=mex.fetch_ticker(symbol='BTC/USD') 23 fly_ticker=fly.fetch_ticker(symbol='BTC/JPY') ---> 24 except NetworkError: 25 time.sleep(3) 26 traceback.print_exc() NameError: name 'NetworkError' is not defined

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2019/06/26 03:54

cctx.NetworkError とか?
guest

回答1

0

ベストアンサー

そう書きたければ、NetworkErrorimportなり何なりして、例外処理のときに名前が見つかるようにしておく必要があります。

軽く調べた感じだとパッケージのトップレベルで定義されているようなので、

python

1from ccxt import NetworkError

と一行足すか、

python

1except ccxt.NetworkError:

とすればたぶんいけます。

投稿2019/06/26 06:51

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問