Example: error handling with WSThrows

Error handling is supported with the WSThrows and WSError attributes.

In this function the @userError in WSThrows references the "userError" modular variable.

You code to trap the error by updating the "message" field with a description of the error, and calling the SetRestError() method to return it.

Example using WSError with WSThrows

IMPORT com

PUBLIC DEFINE userError RECORD ATTRIBUTE(WSError="User error")
  message STRING
END RECORD

PUBLIC FUNCTION GetCustomersNameById( id STRING ATTRIBUTE(WSQuery) )
  ATTRIBUTES(WSGet,
             WSPath="/customers",
             WSThrows="400:@userError")
  RETURNS STRING
    DEFINE s STRING
    WHENEVER ERROR CONTINUE
      SELECT lname INTO s FROM customers WHERE @id  = id
    WHENEVER ERROR STOP
    IF SQLCA.SQLCODE == NOTFOUND THEN
        LET userError.message = SFMT("Could not find customer id :%1",id)
        CALL com.WebServiceEngine.SetRestError(400,userError)
    END IF
    RETURN s
END FUNCTION