Skip to content

SDK Exception Throwing and Handling Guide

1. AuboException Header File

  • The exception handling interface is defined in type_def.h

  • type() method returns the error type

  • code() method returns the error code

  • what() method returns the error message

    c++
     enum error_type
        {
            parse_error = -32700,
            invalid_request = -32600,
            method_not_found = -32601,
            invalid_params = -32602,
            internal_error = -32603,
            server_error,
            invalid
        };
    
        class AuboException : public std::exception
        {
        public:
            AuboException(int code, const std::string &prefix,
                          const std::string &message) noexcept
                : code_(code), message_(prefix + "-" + message)
            {
            }
    
            AuboException(int code, const std::string &message) noexcept
                : code_(code), message_(message)
            {
            }
    
            error_type type() const
            {
                if (code_ >= -32603 && code_ <= -32600) {
                    return static_cast<error_type>(code_);
                } else if (code_ >= -32099 && code_ <= -32000) {
                    return server_error;
                } else if (code_ == -32700) {
                    return parse_error;
                }
                return invalid;
            }
    
            int code() const { return code_; }
            const char *what() const noexcept override { return message_.c_str(); }
    
        private:
            int code_;
            std::string message_;
        };

2. Handling Method

Exceptions are caught using thetry{...}catch(){...}approach, as shown below:

c++
    try{
        ...//出现异常的代码
    }
    catch (const arcs::aubo_sdk::AuboException& e) {
        //打印异常信息
        std::cout << "An exception occurs: " << e.what() << std::endl; 
        //打印错误码
        std::cout << "Exception code: " << e.code() << std::endl;
        //打印异常类型
        std::cout << "Exception type: " << e.type() << std::endl;
    }

3. Example

  • For example, entering an incorrect IP will cause the SDK to throw an exception
c++
#include "aubo_sdk/rpc.h"

using namespace arcs::common_interface;
using namespace arcs::aubo_sdk;

int main(int argc, char** argv)
{
    auto rpc_cli = std::make_shared<RpcClient>();
    try {
        //填写一个错误的IP 000.000.000.000
        std::string ip_local = "000.000.000.000";
        rpc_cli->connect(ip_local, 30004);
        rpc_cli->login("aubo", "123456");
    }
    catch (const arcs::aubo_sdk::AuboException& e) {
        std::cout << "An exception occurs: " << e.what() << std::endl;
        std::cout << "Exception code: " << e.code() << std::endl;
        std::cout << "Exception type: " << e.type() << std::endl;
    }
}
  • Execution result