Передача исключений на уровень выше

403
04 февраля 2017, 07:14

Создал свой класс исключения

    public class HTML_Manager_Exception : ApplicationException
    {
        public HTML_Manager_Exception() { }
        public HTML_Manager_Exception(string message) : base(message) { }
        public HTML_Manager_Exception(string message, Exception inner) : base(message, inner) { }
        protected HTML_Manager_Exception(SerializationInfo info, StreamingContext context) : base(info, context) { }
    }  

Есть у меня два метода:

   public static async void BonusTableRefresh(int u_id)
        {           
            try
            {
                LoginBon(u_id);
            }
            catch (HTML_Manager_Exception ex)
            {
                throw new HTML_Manager_Exception(ex.Message);                
            }                
         }
  public static async void LoginBon(int u_id)
        {
            string login = CryMotherFucker.DecryptStringAES(du["log_bonus"].ToString(), CryMotherFucker.SharedSecret);           
            if (string.IsNullOrEmpty(login))
                throw new HTML_Manager_Exception("Для пользователя не указан логин доступа к сайту");
}

Мне нужно чтобы при выбрасывании исключения в методе LoginBon оно передавалось в метод BonusTableRefresh, но этого почему-то не происходит, прога просто стопится. В чём дело?

Answer 1

Если ваши методы действительно асинхронны, то вам и нужно их вызывать как асинхронные, с ожиданием результата выполнения. В частности, вместо

LoginBon(u_id);

напишите

await LoginBon(u_id);

А тип возвращаемого значения для него замените с void на Task. Также если метод CryMotherFucker.DecryptStringAES является асинхронным, то и перед ним нужен оператор await.

READ ALSO
OracleDataReader GetDouble ошибка cast is not valid

OracleDataReader GetDouble ошибка cast is not valid

Добрый день! Видел много вопросов по этому поводу но ответа так и не нашёл

400
Как установить путь к 7z.dll?

Как установить путь к 7z.dll?

Установлены библиотеки через nuget: 1) SevenZipSharp

583
Как задать значение по умолчанию для свойства типа Font в PropertyGrid?

Как задать значение по умолчанию для свойства типа Font в PropertyGrid?

Для того, чтобы отобразить свойства и поля моего класса в PropertyGrid, я для них задаю атрибуты PropertyGridНапример :

416