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