Seite 1 von 1

try except verständnis Problem

Verfasst: Mittwoch 8. Juli 2009, 20:10
von würmchen
Hallo Leute,

ich sitze gerade an einem Code von einem Vorgänger von mir, der nicht mehr zu erreichen ist und verstehe hier einen Teil nicht, vielleicht kann mir das jemand erklären...

Code: Alles auswählen

            for bond in bonds:
                try:
                    atomcnt1 = my_atom_to_atom[bond[0]]
                    atomcnt2 = my_atom_to_atom[bond[1]]
                    bondtype = bond[2]
                    if atomcnt1 < atomcnt2:
                        mol2mol2.add_bond([atomcnt1, atomcnt2, bondtype])
                    else:
                        mol2mol2.add_bond([atomcnt2, atomcnt1, bondtype])
                except:
                    print 'Warning from cavity2Mol2::_extract_info: Inter-residue bond wrong: ', bond[0], bond[1], bondtype
Ich kann mir eben nicht wirklich vorstellen, wann und warum hier eine exception überhaupt ausgelöst werden soll?

in der add_bond Methode wird nur die Liste an eine andere Liste angehängt.

Was versteh ich hier nicht?

Verfasst: Mittwoch 8. Juli 2009, 20:21
von hendrikS
Eine Exception wird dann ausgelöst, wenn bond unter Umständen weniger als 3 Einträge besitzt oder die Werte von bond[0], bond[1] ungültige Indizes für my_atom_to_atom haben.

Verfasst: Mittwoch 8. Juli 2009, 20:54
von HerrHagen
Genauer gesagt wird die Exception eigentlich immer ausgelöst wenn irgendein Fehler auftritt (da keine Exception angegeben). Also z.B. auch wenn eine Variable innerhalb des Blocks falsch geschrieben wurde oder bond kein Iterable wäre. Das war sicher nicht so gedacht und ist auch (ganz besonders in diesem Fall) schlechter Stil.
Der eigentlich gewünschte Grund der Exception kann also nur aus dem Fehlertext in Zeile 11 geschlossen werden. Um diese zu interpretieren fehlt mir allerdings das Hintergrundwissen.

MFG HerrHagen

Verfasst: Donnerstag 9. Juli 2009, 07:24
von jens
[wiki]try...except[/wiki] :lol:

Verfasst: Samstag 11. Juli 2009, 05:23
von würmchen
Ok, danke euch allen... Ich denk ich hab verstanden wie das try except funktionieren soll und werde die Stelle etwas brauchbarer umbauen bzw behandeln.