проблема с исключениями
От: Casy  
Дата: 01.09.05 04:24
Оценка:
Вот пример следующего кода:

            try
            {
                arParam[0] = new SqlParameter("@CdID", SqlDbType.Int, 4);
                arParam[0].Value = cdID;
                reader = SqlHelper.ExecuteReader(Util.Config.ConnectionString, CommandType.Text, sqlCmd, arParam);
                if(reader.Read())
                {
                    .
                    .
                    .
                }
                else
                {
                    throw new NullResException();
                }
            }
            catch(Exception ex)
            {
                throw new DALException(ex);
            }


проблема в том, что после генерации исключения NullResException его тут же обрабатвает блок catch. а мне этого не надо. уточнить тип исключения в catch'е возможности нет. решил проблему вот таким образом:

            try
            {
                arParam[0] = new SqlParameter("@CdID", SqlDbType.Int, 4);
                arParam[0].Value = cdID;
                reader = SqlHelper.ExecuteReader(Util.Config.ConnectionString, CommandType.Text, sqlCmd, arParam);
                if(reader.Read())
                {
                    .
                    .
                    .
                }
                else
                {
                    throw new NullResException();
                }
            }
            catch(Exception ex)
            {
                if(ex is NullResException)
                {
                    throw new NullResException();
                }
                else
                {
                    throw new DALException(ex);
                }
            }


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