Consider you have two functions func1
and func2
, where func2
is the fallback option for func1
. However, you can also choose by a flag to always go for func2
. Is there a way to avoid redundant code and unite except/else since they have the same content?
if func1_flag == true:
try:
func1()
except:
func2()
else:
func2()
CodePudding user response:
You can include the if
statement in the try
block and raise an exception if func1_flag
isn't True
:
try:
if not func1_flag:
raise ValueError
func1()
except:
func2()
Note that you should specify the exact exception types in the except
statement if you know which ones func1
produces.
CodePudding user response:
There is a way, but it's kind of ugly.
try:
if not func1_flag:
raise Exception
func1()
except:
func2()
This will raise an exception if the func1_flag is false. Then the except block is executed.
You could raise an exception in func1()
either.
But I don't see a big problem in your style.