Search code examples
pythonexceptionraise

Raise Exception - Passing a value


In order to handle some exceptions I've used a code like this:

try:

    shutdown=SSH_CONNECTION(IP, USER_GW, PSW_GW)
    if shutdown ==1:
        print ('No SSH')
        raise ValueError 

except ValueError:
    print ('print something')

since I call SSH_CONNECTION in several parts of my programm, I'd like to know if it possible to pass a value via the raise command in order to understand where the loss of connection (exception) occurred. For instance I was wondering if it is possible to do something like this:

try:

    shutdown=SSH_CONNECTION(IP, USER_GW, PSW_GW)
    if shutdown ==1:
        print ('No SSH')
        raise ValueError  x=0
        
    shutdown=SSH_CONNECTION(IP, USER_GW, PSW_GW)
    if shutdown ==1:
        print ('No SSH')
        raise ValueError  x=1
        

except ValueError:
    if x=0:
        print ('print something')
    elif x=1
        print ('print something else')
    

Solution

  • You can give arguments to an exception, they will be stored in the args attribute.

    try:
        shutdown = SSH_CONNECTION(IP, USER_GW, PSW_GW)
        if shutdown == 1:
            raise ValueError("No SSH", 0)
        shutdown = SSH_CONNECTION(IP, USER_GW, PSW_GW)
        if shutdown == 1:
            raise ValueError("No SSH", 1)
    except ValueError as value_error:
        message, code = value_error.args
        print(message)
        if code == 0:
            print("0")
        elif code == 1:
            print("1")