public MyException(string message, SqlException sqlException) : base(message, sqlException)
        {
            switch (sqlException.Number)
            {
            case (int)MyErrorType.ConcurrencyObjectDelete:
                _typError = MyErrorType.ConcurrencyObjectDelete;
                break;

            case (int)MyErrorType.DatabaseObjectMissing:
                _typError = MyErrorType.DatabaseObjectMissing;
                MyExceptionManager.Log(this);
                break;

            case (int)MyErrorType.DatabaseNoConnection:
            case (int)MyErrorType.DatabaseNoConnection1:
                _typError = MyErrorType.DatabaseNoConnection;
                MyExceptionManager.Log(this);
                break;

            case (int)MyErrorType.DatabaseConnectionLost:
                _typError = MyErrorType.DatabaseConnectionLost;
                MyExceptionManager.Log(this);
                break;

            case (int)MyErrorType.ConstraintUnique:
                _typError = MyErrorType.ConstraintUnique;
                break;

            default:
                _typError = MyErrorType.Unhandled;
                MyExceptionManager.Log(this);
                break;
            }
        }
        /// <summary>
        /// Permanently deletes a stored template.
        /// </summary>
        /// <param name="templatePath">The full path of a stored template file.</param>
        /// <returns>true if the template was deleted; otherwise false.</returns>
        public static bool DeleteTemplate(string templatePath)
        {
            bool rtnValue = false;

            if (File.Exists(templatePath))
            {
                try
                {
                    File.Delete(templatePath);
                    rtnValue = true;
                }
                catch (Exception ex)
                {
                    MyExceptionManager.Log(ex);
                    return(false);
                }
            }

            return(rtnValue);
        }
        /// <summary>
        ///
        /// This method is the event handler for any unhandled exceptions in the application.
        /// If it catches any of these errors, it will display the error, log it, and then exit.
        /// It is hooked in Main.
        ///
        /// </summary>
        /// <param name="sender" type="object">not used.</param>
        /// <param name="t" type="ThreadExceptionEventArgs">the exception thrown.</param>
        public static void HandleApplicationException(object sender, ThreadExceptionEventArgs t)
        {
            try
            {
                frmError frm = new frmError(MyExceptionManager.Log(t.Exception));

                if (frm.ShowDialog() == DialogResult.Cancel)
                {
                    Environment.Exit(0);
                }
            }
            catch
            {
                try
                {
                    MyMessageBox.Show(null, "Fatal Error", MyDisplayMessage.FatalError);
                }
                finally
                {
                    Environment.Exit(0);
                }
            }
        }