I have a method that checks something and which can
I want catch the exception properly to raise one myself, but also if the test returns False. The incorrect way to do this is
try:
if not check():
raise MyException()
except:
raise MyException()
as the first MyException
is caught after the except
again. One way to handle this properly would be
try:
flag = check()
except:
raise MyException()
else:
if not flag:
raise MyException()
Is this the only way of dealing with this situation, or is there another way to handle it more efficient, getting rid of the flag
variable?
You should never use except: because that catches ALL exceptions, including SystemExit, you should probably do:
try:
if not check():
raise MyNewException()
except ExceptionRaisedByCheck:
raise MyNewException()
If the exception coming from check() is the same as the one you want to raise, you should change that.
Edit: If the exception is the same, you can also simply do this (Mark Byers had this in his answer, but it's gone now):
if not check():
raise TheSameException()
This will propagate the exception or raise if False.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With