4

こんにちは、問題があります。私はmechanize、python 2.7を使用していくつかのサイトに接続しています(コードは今のところ重要ではありません)サイトのリストがあり、それらに1つずつ接続しています。リストのサイトが存在しない場合、次のエラーが表示されます。

urllib2.URLError: [Errno 11004] getaddrinfo に失敗しました

私はこれを行うことでそれを処理しようとしました:

             except mechanize.URLError, e:
                    result = str(e.reason)

また

             except urllib2.URLError, e:
                    result = str(e.reason)

あるいは

             except Exception, e:
                    result = str(e)

しかし、それは働きたくないだけです。

これを解決する方法は?このエラーが発生した場合、「接続に失敗しました」などを出力して、リストの次のアドレスに移動したいだけです。このエラーをキャッチする方法はexcept?

4

2 に答える 2

9

ランダムな推測ですが、試してください:

import socket

try:
   ...
except socket.gaierror:
   pass

socket.gaierror"[Errno 11004] getaddrinfo failed"エラーです。

そうすれば、例外を簡単に把握できます

try:
    ...
except:
    import sys
    # prints `type(e), e` where `e` is the last exception
    print sys.exc_info()[:2]
于 2011-01-30T19:21:54.137 に答える
3

やるだけ

except urrlib2.URLError:
    print "Connection failed"
    continue # NOTE: This assumes this is in a loop. If not, substitute for return

ほとんどの Python ライブラリは、エラー レポート (この場合は ) で例外の種類を教えてくれるurllib2.URLErrorので、まさにそれがexcept目的です。

ただし、うまくexcept Exception:いかない場合は、ユーザーが間違った Web アドレスを入力した場合よりも深刻な問題があります (これが urllib2 のせいではないと仮定します)。

于 2011-01-30T18:29:55.530 に答える