Mshareef880 Ответов: 0

Как обрабатывать пользовательские исключения в ASP.NET C#, я попробовал следовать механизму, но не выполнил.


основываясь на этом следующем коде, я собираюсь получить данные из таблицы отступов с помощью хранимой процедуры с двумя аргументами (indno, incharge). поэтому всякий раз, когда возникают системные исключения ( например, исключение sql, исключение и т. д.), Я хочу обрабатывать пользовательские исключения, такие как DAO catch block.. но не работает.. не знаю, где я ошибся.

Заранее спасибо..

Что я уже пробовал:

public DataSet GetIndentsDetails(int indno,string Incharge)
        {
            DataSet DsIndentDetails = new DataSet();
            try
            {
                if (dbConn == null)
                    dbConn = CommonProcedures.GetConnection();
                dbCmd = dbConn.GetStoredProcCommand("usp_GetAllIndents");
                dbConn.AddInParameter(dbCmd, "IndentNo", DbType.Int32, indno);
                dbConn.AddInParameter(dbCmd, "Incharge", DbType.String, Incharge);
                DsIndentDetails = (DataSet)dbConn.ExecuteDataSet(dbCmd);                
                return DsIndentDetails;
            }
            catch (DBConnOpeningException dbConnOpenEx)
            {
                
                throw new DBConnOpeningException("Unable to Connect Database");
               // return DsIndentDetails;
            }
            catch(DBSelectFailedException dbSelExc)
            {
                throw new DBSelectFailedException("Select Statement Failed");
            }
            catch (DAOException DAOEx)
            {
                throw new DAOException("DAOException Occured");
                //return DsIndentDetails;
            }
            catch (IndentsListException ilistEx)
            {
                throw new IndentsListException("Could not load Indent List");
                //return DsIndentDetails;
            }
                       
            catch(ERPException erpEx)
            {
                throw new ERPException("ERPException Occured");
            }
            finally
            {
                dbConn = null;
            }
        }



пользовательские исключения
--------------------
public class ERPException : System.Exception
    {
        public ERPException():base()
        {
           
        }

 
        public ERPException(string arg1,System.Exception arg2):base( String.Format( "{0}",arg1), arg2 )
        {

        }
        public ERPException(string arg1): base (String.Format("{0}",arg1))
        {

        }
        //public ERPException(System.Exception arg1):base(arg1)
        //{

        //}
        
    }



public class DAOException : ERPException
   {
       public DAOException(): base()
       {

       }
       public DAOException(string arg1,System.Exception arg2):base(String.Format("{0}",arg1), arg2)
       {

       }
       public DAOException(string arg1):base(String.Format("{0}",arg1))
       {

       }
   }

Richard Deeming

Ни одно из исключений, которые вы ловите, не являются встроенными исключениями. Если вы получите DbException- его не поймают.

Mshareef880

хорошо..спасибо за ответ,,

Keith Barrow

Просто чтобы добавить к ответу Ричарда Диминга - если вы хотите поймать, скажите: DAOEXception вы должны сначала бросить его (или, возможно, поймать немного DBException и бросьте тип исключения, который вы хотите. Фреймворк не будет автоматически превращаться в Исключение в DAOException потому что один из них является подклассом другого (предполагая, что именно так вы ожидаете, что он будет работать).

Mshareef880

@кит Барроу
Спасибо :)

ZurdoDev

Просто поймайте регулярное исключение.

0 Ответов