Как обрабатывать пользовательские исключения в 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
Просто поймайте регулярное исключение.