2016-08-08 41 views
1

Ich habe diesen seltsamen Fehler in meiner Anwendung bekommen. Dies wird nicht wegen Mechanize-Bibliothek erzeugt, weil ich einen Versuch-außer um es für die Klasse Exception gesetzt habe.Seltsame Ausnahme in Python-Code - mechanize und beautifulsoup

Und die browser.open() gibt die erforderliche Adresse ohne irgendein Problem zurück. Auch diese Ausnahme kommt nicht 1 von 10 mal.

Ich habe keine Ahnung, was es ist ...

bitte

Diese Hilfe ist der Code:

def check_result(self, submission_id, question_code): 
    """ 
    returns the result of a problem submission. 
    :return: result codde 
    RA - right answer 
    WA - wrong answer 
    CE - Compilation error 
    RE - Runtime Error 
    """ 
    print "================================" 
    print "Response:" 
    try: 
     response = self._br.open(self.URL + '/status/' + question_code) 
    except Exception: # TODO get more specific exception for better stack trace 
     raise ExceptionSet.InternetConnectionFailedException 
    # print response.read() 
    response = BeautifulSoup(response.read(), 'html.parser') 
    tables = response.findChildren('table') 
    table = tables[0] 
    rows = table.findChildren(['tr', 'th']) 
    result = '' 
    flag = False 
    for row in rows: 
     cells = row.findChildren('td') 
     for cell in cells: 
      if cell.string == submission_id: 
       flag = True 
       result = cell.string 
       break 
     if flag: 
      break 
    print result 

Die genaue Stack-Trace ist:

Exception mechanize._response.httperror_seek_wrapper: 
<httperror_seek_wrapper (urllib2.HTTPError instance) at 0x7fd87195fbb0 
whose wrapped object = <closeable_response at 0x7fd87490dc20 whose fp = 
<response_seek_wrapper at 0x7fd87195c830 whose wrapped object = 
<closeable_response at 0x7fd87195c2d8 whose fp = <socket._fileobject 
object at 0x7fd8719706d0>>>>> in <bound method API.__del__ of 
<CodeChef.API instance at 0x7fd8749249e0>> ignored 

Thank Sie!

und Entschuldigung, wenn es ein offensichtliches und direktes Problem ist.

bearbeiten: Anscheinend ist das Problem nicht mit diesem Stück Code, Ich versuche immer noch, es zu lösen. Wenn Sie irgendwelche Hinweise geben können, die wirklich hilfreich wären.

Der Link zum Code ist: https://github.com/ParadoxZero/CodechefAPI

bitte kommentieren, wenn ich direkt den Code hier posten sollte.

Vielen Dank!

bearbeiten 2:

den Grund für den Fehler gefunden, aber immer noch nicht verstehen, warum es passiert ist. Ich rief die Funktion logout() in __ del __() Entfernen __ del __() den Fehler behoben.

Aber immer noch nicht verstehen, was es war oder warum es passiert ist.

Antwort

1

Die Lösung gefunden, dass der Fehler aufgrund einer einfachen Ausnahme im Destruktor aufgetreten ist, die nicht behandelt wurde.

Schreiben Sie einfach Code, um entweder die Ausnahme zu behandeln oder sie erneut zu werfen