除了Exception不能捕获来自导入模块的异常

时间:2020-07-03 11:06:11

标签: python

我正在尝试使用模块以连接到Qbittorrent。但是,每当Qbittorrent客户端不可用时,我都会显示一条错误消息。

所以我导入模块:

import qbittorrentapi as qbit

然后,在一个函数中,我尝试执行try / except块:

try:
    qbt_client.torrents_add(urls=link, save_path=path_to_save, is_paused=False)
except Exception:
    return 'Could not connect to Qbt.'

但是,我仍然收到大量错误,并且我的错误消息根本没有显示:

runfile('/Users/PargAsh/Dev/Github/piAppSwitcher/piAppSwitcher.py', wdir='/Users/PargAsh/Dev/Github/piAppSwitcher')
Traceback (most recent call last):

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/connection.py", line 157, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/util/connection.py", line 84, in create_connection
    raise err

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/util/connection.py", line 74, in create_connection
    sock.connect(sa)

ConnectionRefusedError: [Errno 61] Connection refused


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/connectionpool.py", line 672, in urlopen
    chunked=chunked,

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/connectionpool.py", line 376, in _make_request
    self._validate_conn(conn)

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/connectionpool.py", line 994, in _validate_conn
    conn.connect()

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/connection.py", line 300, in connect
    conn = self._new_conn()

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/connection.py", line 169, in _new_conn
    self, "Failed to establish a new connection: %s" % e

NewConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0x7f9f974e7b90>: Failed to establish a new connection: [Errno 61] Connection refused


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
    timeout=timeout

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/connectionpool.py", line 720, in urlopen
    method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/urllib3/util/retry.py", line 436, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))

MaxRetryError: HTTPSConnectionPool(host='192.168.3.13', port=8080): Max retries exceeded with url: /api/v2/auth/login (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f9f974e7b90>: Failed to establish a new connection: [Errno 61] Connection refused'))


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/qbittorrentapi/request.py", line 154, in _request_wrapper
    return self._request(**kwargs)

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/qbittorrentapi/request.py", line 238, in _request
    **requests_params)

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/requests/sessions.py", line 530, in request
    resp = self.send(prep, **send_kwargs)

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/requests/sessions.py", line 643, in send
    r = adapter.send(request, **kwargs)

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)

ConnectionError: HTTPSConnectionPool(host='192.168.3.13', port=8080): Max retries exceeded with url: /api/v2/auth/login (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f9f974e7b90>: Failed to establish a new connection: [Errno 61] Connection refused'))


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "/Users/PargAsh/Dev/Github/piAppSwitcher/piAppSwitcher.py", line 56, in <module>
    print(moviefinder('the matrix'))

  File "/Users/PargAsh/Dev/Github/piAppSwitcher/piAppSwitcher.py", line 41, in moviefinder
    response = mf(movie)

  File "/Users/PargAsh/Dev/Github/piAppSwitcher/MovieFinder/Movie_Finder.py", line 85, in MovieFinder
    qbt_client.auth_log_in()

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/qbittorrentapi/request.py", line 127, in auth_log_in
    data={'username': self.username, 'password': self._password})

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/qbittorrentapi/request.py", line 145, in _post
    return self._request_wrapper(http_method='post', api_name=_name, api_method=_method, **kwargs)

  File "/Users/PargAsh/opt/miniconda3/envs/piAppSwitcher/lib/python3.7/site-packages/qbittorrentapi/request.py", line 179, in _request_wrapper
    raise APIConnectionError(error_message, response=response)

APIConnectionError: Failed to connect to qBittorrent. Connection Error: ConnectionError(MaxRetryError("HTTPSConnectionPool(host='192.168.3.13', port=8080): Max retries exceeded with url: /api/v2/auth/login (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f9f974e7b90>: Failed to establish a new connection: [Errno 61] Connection refused'))"))

所以我尝试了几种不同的方法,包括:

  • 光秃秃的
  • 除了(qbit.ConnectionRefusedError,qbit.NewConnectionError,qbit.MaxRetryError,qbit.ConnectionError,qbit.APIConnectionError)
  • 从qbittorrentapi导入APIConnectionError,然后除APIConnectionError之外

问题是:

  • 如何捕获这些错误并仅显示一条简单的消息:“糟糕。出问题了!”。
  • 将来,我如何从未编写的导入模块中捕获错误,并且可能不知道可能引发的所有可能的异常?

谢谢您的帮助!

0 个答案:

没有答案
相关问题