Sobes.tech
Назад к вопросам
Junior
13

Если нельзя кидать Error, но хотим обернуть исключение — что использовать?

Компании, где спрашивали
ИП Ганус Александр Андреевич

Ответ от нейросети

sobes.tech AI

Если в вашем коде нельзя выбрасывать исключения (throw), но нужно обработать ошибку и передать информацию об исключении дальше, можно использовать паттерн обёртки ошибки в объект или структуру с полями для кода ошибки и сообщения.

Например, создать класс или структуру Result, которая содержит:

  • флаг успеха (bool IsSuccess)
  • сообщение об ошибке (string ErrorMessage)
  • дополнительные данные (если нужно)

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

public class Result {
    public bool IsSuccess { get; set; }
    public string ErrorMessage { get; set; }
}

public Result DoWork() {
    try {
        // код
        return new Result { IsSuccess = true };
    } catch (Exception ex) {
        // обернуть исключение в Result
        return new Result { IsSuccess = false, ErrorMessage = ex.Message };
    }
}

Таким образом, исключение не выбрасывается, а передаётся как часть результата.