Stack Exchange
How to Display custom error code and custom error message in catch block?
@RestResource(urlMapping='/AccountThrowErrorCode/')
global class AccountError {
    @HttpPost
    global static Account doPost(){
        string jsonResponse='';
        RestRequest request = RestContext.request;
        RestResponse response = RestContext.response;
        String requestBody = System.RestContext.request.requestBody.toString();
        AccWrapperError acc = (AccWrapperError)JSON.deserialize(requestBody,AccWrapperError.class);

        try{
            if(string.isBlank(acc.Name) || string.isBlank(acc.phone))
                throw new accountCodeException('Fields should not be Empty');
        }
        else{
            Account accRecord = new Account();
            accRecord.Name = acc.Name;
            accRecord.Phone = acc.Phone;
            accRecord.Rating = acc.Rating;
            insert accRecord;
            return accRecord;
        }
        catch (accountCodeException e) {
            accountCodeException aa;
            throw new accountCodeException('New error '{errorCode:201,errorMessage:+e.getMessage()});
        }
    }

    public class accountCodeException extends Exception {
    }
}


Welcome to Salesforce Stack Exchange (SFSE)! Thank you for the code, but you need to please edit your question to also add exactly (e.g., exact error text, details of unexpected behavior) how it is not working. (From What topics can I ask about here?: 'Your question should include...A specific, detailed description of the issue ("it doesn’t work" is not enough to allow the community to help).')

you can try using a new apex class, with two properties: code and message:
public class CustomExceptionResponse {
    
    private String code;
    private String message;
    
    public CustomExceptionResponse(String code, String message) {
        this.code = code;
        this.message = message;
    }
}

and then when you throw your custom exception, serialize the object, something like this:
catch (Exception e) {
   String error = JSON.serialize(new CustomExceptionResponse('201', 'Your Custom Message Here plus: ' + e.getMessage()));
   throw new accountCodeException(error);
}

Hope this helps!
