как отловить ошибку и присвоить ее значению модели в веб-интерфейсе - PullRequest
0 голосов
/ 20 марта 2020

У меня есть веб-API, который имеет модель ответа, когда он возвращает результаты, он присваивает результаты значениям, установленным следующим образом:

 public class ResponseHandler
    {

        public string id { get; set; }
        public double balance { get; set; }
        public string currency { get; set; }
        public int errorcode { get; set; }
        public string errorDescription { get; set; }

    }

, и этот обработчик ответа вызывается ниже:

public async Task<ResponseHandler> ExecuteAsync(CheckCommand command)
        {        
                var check = await _client.CheckAsync( command.id);
                _httpContextAccessor.HttpContext.Items["CommandResult"] = check;
                return new ResponseHandler
                {
                    id = check.ID.ToString(),
                    balance = decimal.ToDouble(check.AccountBalance),
                    currency = check.CurrencyCode,
                    errorcode = 0,
                    errorDescription = "null"

                };
        }

так что, в основном, если нет возвращаемой ошибки, тогда я назначу код ошибки равным 0. Поэтому мой вопрос заключается в том, как проверить, успешен ли мой запрос, а затем присвоить значение 0 для ошибочного кода, если нет. я назначаю эту ошибку описанию ошибки

это то, что я пытался

        public async Task<ResponseHandler> ExecuteAsync(CheckCommand command)
                {        try{
                        var check = await _client.CheckAsync( command.id); // it fails here and doesnt even hit my catch method when it returns an error
                        _httpContextAccessor.HttpContext.Items["CommandResult"] = check;
                        return new ResponseHandler
                        {
                            id = check.ID.ToString(),
                            balance = decimal.ToDouble(check.AccountBalance),
                            currency = check.CurrencyCode,
                            errorcode = 0,
                            errorDescription = "null"

                        };
    }
    catch(exception ex){

    }
                }

как мне отловить ошибку, пришедшую из CheckAsyn c

1 Ответ

0 голосов
/ 20 марта 2020

Объявите новый ResponseHandler перед попыткой перехвата и установите свойства после того, как CheckAsyn c завершится правильно и в перехвате, если вы получите ошибку.

Примерно так:

public async Task<ResponseHandler> ExecuteAsync(CheckCommand command)
{
    ResponseHandler resp = new ResponseHandler();
    try
    {
        var check = await _client.CheckAsync(command.id); // it fails here and doesnt even hit my catch method when it returns an error
        _httpContextAccessor.HttpContext.Items["CommandResult"] = check;
        resp.id = check.ID.ToString();
        resp.balance = decimal.ToDouble(check.AccountBalance);
        resp.currency = check.CurrencyCode;
        resp.errorcode = 0;
        resp.errorDescription = "null";

    }
    catch (exception ex)
    {
        resp.id = "";
        resp.balance = 0;
        resp.currency = "";
        resp.errorcode = 1;
        resp.errorDescription = ex.StackTrace.toString();

    }
    return resp;
}
...