如何检查日期以确保它不是将来时态,而不使用 EF 将应用程序删除到 WPF 上

问题描述 投票:0回答:1

我有一个应用程序来维护包含人员及其数据的数据库。比如电话号码、出生日期、地址等。我想修复其中一个错误...我只需要添加现有的出生日期(该日期不能是将来时,并且必须符合所需的格式(格式01.01.0101 删除了应用程序 P.S 这是一个例子)。我知道如何进行这些限制/检查并验证数据,但我有一个大问题 - 当我抛出异常时,我的应用程序会删除... try-catch 构造没有帮助

此代码检查出生日期,以便它不会是将来的日期:

private DateTime _dateOfBirth;
public DateTime DateOfBirth
{
    get { return _dateOfBirth; }
    set
    {
        try
        {
            if (DateOfBirth > DateTime.Now)
            {
                throw new Exception("Дата рождения не может быть в будущем.");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Произошла ошибка при записи в базу данных: " + ex.Message);
        }
    }
}

这是带有 EF 的 WPF 应用程序。我开始学习它,但不知道如何处理这些异常..

我尝试使用 try-catch 构造,但没有帮助 还尝试使用全局错误处理程序,但它也不起作用。

public App()
    {
        this.DispatcherUnhandledException += OnDispatcherUnhandledException;
        AppDomain.CurrentDomain.UnhandledException += OnCurrentDomainUnhandledException;
        TaskScheduler.UnobservedTaskException += OnUnobservedTaskException;
    }

    void OnDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
    {
        MessageBox.Show("Необработанное исключение: " + e.Exception.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
        e.Handled = true;
    }

    void OnCurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        MessageBox.Show("Необработанное исключение: " + ((Exception)e.ExceptionObject).Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
    }

    void OnUnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
    {
        MessageBox.Show("Необработанное исключение: " + e.Exception.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
        e.SetObserved();
    }
c# wpf entity-framework datetime try-catch
1个回答
0
投票

我认为这主要是不好的形式,但您可以在设置器中处理验证并显示错误消息,而不会引发可能导致应用程序崩溃的异常。

private DateTime _dateOfBirth;
public DateTime DateOfBirth
{
    get { return _dateOfBirth; }
    set
    {
        DateTime tempDate = value;

        if (tempDate > DateTime.Now)
        {
            MessageBox.Show("Дата рождения не может быть в будущем.", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
        }
        else
        {
            _dateOfBirth = tempDate; // Only assign the value if it's valid.
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.