自定义Exception
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; namespace Model { /// <summary> /// This class is used to define the custom exception. /// </summary> [DataContract] public class MyExceptionContainer:Exception { /// <summary> /// The exception's starck message. /// </summary> [DataMember] public string ErrorMessage { get; set; } /// <summary> /// The custom informtion. /// </summary> [DataMember] public string Description { get; set; } #region Constructor public MyExceptionContainer() { } public MyExceptionContainer(string errorMessage, string description) { this.ErrorMessage = errorMessage; this.Description = description; } #endregion } }
UserException
using System; using System.Runtime.Serialization; using System.Security.Permissions; namespace Constant { /// <summary> /// The class is defined for const fields of login exception. /// </summary> [Serializable] public class UserException:Exception,ISerializable { #region Fields private string message; private Exception innerException; #endregion #region Constructors public UserException() { } public UserException(string message) { this.message = message; } public UserException(string message, Exception exception) { this.message = message; this.innerException = exception; } #endregion #region Const fileds of user functions' exception. public const string UserNameIsNull = "*Username is null."; public const string PasswordIsNull = "*Password is null."; public const string LoginedFailed = "*Username or password is wrong."; public const string ChangeNewPasswordIsNull = "*New password is null."; public const string ChangeConfirmIsNull = "*Confirm is null."; public const string TwiceEnterIsNotSame = "*New password and confirm is not same."; public const string PasswordIsWrong = "*Old Password is wrong."; public const string UpdatePasswordFailed = "The error is come from UpdatePasswordFailed Method in UserDal Class."; public const string RetrieveUserByUserName = "The error is come from RetrieveUserByUserName Method in UserDal Class."; public const string ChangePasswordSucceed = "Change password succeed."; public const string FormatException = "The parameter error."; #endregion } }
DAL
public int UpdatePassword(string newPassword, string userName) { int influenceNumber = 0; try { string sqlText = SqlText.UpdatePassword; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@password", newPassword), new SqlParameter("@userName", userName), }; influenceNumber = SqlHelper.ExecuteNonQuery(sqlText, parms); } catch (SqlException ex) { throw new UserException(UserException.UpdatePasswordFailed, ex); } return influenceNumber; }
BLL
public IList<Exam> RetrieveExamList(string userName, int order) { try { return examDal.RetrieveExamList(userName, order); } catch (ExamException ex) { log.Error(ExamException.RetrieveExamList, ex); throw new FaultException<MyExceptionContainer>( new MyExceptionContainer() { ErrorMessage = ex.Message, Description = ExamException.RetrieveExamList }); } }
Use
catch (FaultException<MyExceptionContainer> myException) { log.Error(myException.Message, myException); } catch (FaultException faultException) { log.Error(faultException.Message, faultException); } catch (Exception exception) { log.Error(exception.Message, exception); }