[Erledigt] Probleme mit Exceptions
Verfasst: Donnerstag 27. September 2007, 12:01
Mahlzeit!
Ich habe zwei Probleme mit Exceptions:
- Ich möchte bestimmte Exceptions besonders behandeln und
- ich möchte eine Exception zweimal werfen können (sieht wie ein Bug aus, ich habe aber keine Vorstellung, wo ich ihn versteckt haben könnte).
Hier der Code:
So weit, so einfach. Doch leider funzt da was nicht, wie ich erwartet habe. Die Ausgabe für Teil 1 und 2 ist die folgende:
Wieso wird in Teil 2 der "execpt:" Zweig betreten? Der Wert der Exception ist doch 2 und nicht 1.
Weiter mit der zweiten Frage. Die gesamte Ausgabe ist die folgende:
Das versteh ich überhaupt nicht. Wieso wird beim zweiten Aufruf von testFunc1() nicht die '1' übergeben, sondern (wie der Eclipse debugger mir verraten hat) eine Instanz der SpecException?
Gruß und Danke,
Christoph
Ich habe zwei Probleme mit Exceptions:
- Ich möchte bestimmte Exceptions besonders behandeln und
- ich möchte eine Exception zweimal werfen können (sieht wie ein Bug aus, ich habe aber keine Vorstellung, wo ich ihn versteckt haben könnte).
Hier der Code:
Code: Alles auswählen
#-----------------------------------------------------------------------------
class SpecException(Exception):
EX_1 = 1
EX_2 = 2
#-------------------------------------------------------------------------
def __init__(self, expression, message):
print " Expression: %d" % expression
print " Message : " + message
#-------------------------------------------------------------------------
#-----------------------------------------------------------------------------
def testFunc1():
raise SpecException( SpecException.EX_1, "BlaBla_1")
#-----------------------------------------------------------------------------
def testFunc2():
raise SpecException( SpecException.EX_2, "BlaBla_2")
#-----------------------------------------------------------------------------
print "===================== Teil 1 ======================="
try:
testFunc1()
except SpecException, SpecException.EX_1:
print "Exception geschmissen!"
print "===================== Teil 2 ======================="
try:
testFunc2()
except SpecException, SpecException.EX_1:
print "Exception geschmissen!"
finally:
print "Exception nicht behandelt!"
print "===================== Teil 3 ======================="
try:
testFunc1()
except SpecException, SpecException.EX_1:
print "Exception geschmissen!"
Code: Alles auswählen
===================== Teil 1 =======================
Expression: 1
Message : BlaBla_1
Exception geschmissen!
===================== Teil 2 =======================
Expression: 2
Message : BlaBla_2
Exception geschmissen!
Exception nicht behandelt!
Weiter mit der zweiten Frage. Die gesamte Ausgabe ist die folgende:
Code: Alles auswählen
===================== Teil 1 =======================
Expression: 1
Message : BlaBla_1
Exception geschmissen!
===================== Teil 2 =======================
Expression: 2
Message : BlaBla_2
Exception geschmissen!
Exception nicht behandelt!
===================== Teil 3 =======================
Traceback (most recent call last):
File "D:/PythonTest/Exception.py", line 46, in <module>
testFunc1()
File "D:/PythonTest/Exception.py", line 22, in testFunc1
raise SpecException( SpecException.EX_1, "BlaBla_1")
File "D:/PythonTest/Exception.py", line 16, in __init__
super( SpecException, self).__init__(expression, message)
File "D:/PythonTest/Exception.py", line 5, in __init__
print " Expression: %d" % expression
TypeError: int argument required
Gruß und Danke,
Christoph