user2010023
user2010023

Reputation: 83

How do I test for exceptions in if-statements in python?

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

Answers (4)

Mafiya _yt
Mafiya _yt

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

Rohit Jain
Rohit Jain

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

inspectorG4dget
inspectorG4dget

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

Alex
Alex

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

Related Questions