Reputation: 83
i want to write a function to report the different results from another function there are some exceptions among these results but I cannot convert them into if statement
example :
if f(x) raise a ValueError, then my function has to return a string 'Value' if f(x) raise a TypeError, then my function has to return a string 'Type
But I don't know how to do this in Python. Can someone help me out.
My Code is like this: -
def reporter(f,x):
if f(x) is ValueError():
return 'Value'
elif f(x) is E2OddException():
return 'E2Odd'
elif f(x) is E2Exception("New Yorker"):
return 'E2'
elif f(x) is None:
return 'no problem'
else:
return 'generic'
Upvotes: 8
Views: 58467
Reputation: 1
def reporter(f,x):
try:
if f(x) is None:
return 'no problem'
else:
return 'generic'
except ValueError:
return 'Value'
except E2OddException:
return 'E2Odd'
except E2Exception:
return 'E2'
Upvotes: -2
Reputation: 213223
You have try-except
to handle exceptions in Python: -
def reporter(f,x):
try:
if f(x):
# f(x) is not None and not throw any exception. Your last case
return "Generic"
# f(x) is `None`
return "No Problem"
except ValueError:
return 'Value'
except TypeError:
return 'Type'
except E2OddException:
return 'E2Odd'
Upvotes: 18
Reputation: 113915
def reporter(f,x):
try:
if f(x) is None:
return 'no problem'
else:
return 'generic'
except ValueError:
return 'Value'
except E2OddException:
return 'E2Odd'
except E2Exception:
return 'E2'
Upvotes: 2
Reputation: 44305
You put your function call in a try-except
construct like
try:
f(x)
except ValueError as e:
return "Value"
except E20ddException as e:
return "E20dd"
The function itself does not return the exception, the exception is caught outside.
Upvotes: 0