Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我正在使用try-catch,但它';它仍然在WPF应用程序中抛出错误_C#_Wpf_Xaml - Fatal编程技术网

C# 我正在使用try-catch,但它';它仍然在WPF应用程序中抛出错误

C# 我正在使用try-catch,但它';它仍然在WPF应用程序中抛出错误,c#,wpf,xaml,C#,Wpf,Xaml,这是页面构造函数代码 public DebitNoteCreation(int transactionID) : this() { try { InsertDebitNote dn = new InsertDebitNote(); dn.Load(transactionID); this.DataContext = dn; } catch

这是页面构造函数代码

public DebitNoteCreation(int transactionID) :
        this()
    {
        try
        {
            InsertDebitNote dn = new InsertDebitNote();
            dn.Load(transactionID);
            this.DataContext = dn;
        }
        catch (Exception)
        {
            MessageBox.Show("Some of the entries for this transaction are empty so kindly complete them", "Error");
        }
        this.NavigationService.Navigate(new Uri("DisplayTransaction.xaml", UriKind.Relative));
    }
错误消息

对象引用未设置为对象的实例


我可以看到消息框,但单击“确定”按钮后,它会抛出上面的书面错误。

如果抛出异常以显示消息框,则表明出现了问题。。。您将不会为这个.DataContext分配任何内容。这很可能会导致后续错误

查看
NullReferenceException
的堆栈跟踪,以查看抛出它的确切原因,但基本上,您试图继续使用未完全初始化的对象,这很少是一个好主意

(请注意,您可能应该捕获一个更具体的异常,并且您应该明确地记录它,而不仅仅是显示一个消息框然后忽略它。)


如果必须继续,请将上下文设置为空音符或类似的内容。不过,我怀疑你实际上不想在这种情况下显示页面。在构建页面之前,您可能需要考虑加载事务,以使事情变得更干净。

< P>如果抛出异常,显示消息框,则会出现一些错误。您将不会为这个.DataContext分配任何内容。这很可能会导致后续错误

查看
NullReferenceException
的堆栈跟踪,以查看抛出它的确切原因,但基本上,您试图继续使用未完全初始化的对象,这很少是一个好主意

(请注意,您可能应该捕获一个更具体的异常,并且您应该明确地记录它,而不仅仅是显示一个消息框然后忽略它。)

如果必须继续,请将上下文设置为空音符或类似的内容。不过,我怀疑你实际上不想在这种情况下显示页面。在构建页面之前,您可能需要考虑加载事务,以使事情变得更干净。

< P>因为单击OK之后发生错误,所以我希望<>代码> NavigationService .<代码>是“代码> null <代码>,因为构造函数失败。

另外,您不应该假设
异常
意味着“此事务的某些条目是空的,请完成它们”,并且当构造函数显然无法完全初始化对象时,允许构造函数成功是非常危险的

事实上,只有用户界面无论如何都应该做消息框。我会重写,这样它在检查事务后会抛出一个已知的异常(即,您认为是问题的场景)。让UI捕获该异常并在那里执行消息框。

由于错误发生在单击“确定”之后,我预计由于构造函数失败,
此导航服务
将为
null

另外,您不应该假设
异常
意味着“此事务的某些条目是空的,请完成它们”,并且当构造函数显然无法完全初始化对象时,允许构造函数成功是非常危险的



事实上,只有用户界面无论如何都应该做消息框。我会重写,这样它在检查事务后会抛出一个已知的异常(即,您认为是问题的场景)。让UI捕获该异常并在那个里执行消息框。

此异常的堆栈跟踪(带行号)是什么?请将确切的调用堆栈作为旁注发布,捕获这样的一般异常是非常不好的做法。发生错误是因为datetime为空。我是故意这样做的。我想要的是在出现这种情况时导航到其他页面。马克法听起来不错。将检查“由于空日期时间而发生错误。我故意这样做。”-然后检查空日期时间。不要仅仅假设任何
异常
都意味着这是一个特定的场景。任何时候都可能发生许多疯狂的事情。此异常的堆栈跟踪(带有行号)是什么?请将确切的调用stack作为旁注发布,捕获这样的一般异常是非常不好的做法。发生错误是因为datetime为空。我是故意这样做的。我想要的是在出现这种情况时导航到其他页面。马克法听起来不错。将检查“由于空日期时间而发生错误。我故意这样做。”-然后检查空日期时间。不要仅仅假设任何
异常
都意味着这是一个特定的场景。任何时候都可能发生很多疯狂的事情。我知道为什么会抛出错误,因为DateTime字段是空的。我想要的是,当抛出这个错误时,页面应该导航到另一个页面,在那里他可以完成transaction@Pankaj:那么您应该在尝试显示页面之前尝试加载事务。然后,您可以根据事务负载是否工作,显示最合适的页面—成功案例页面或失败页面。@Pankaj—查看我在回复中添加的错误;简短版本:“不,你不”@Jon:我应该把导航代码放在哪里,因为当我把导航代码放在构造函数中时,它抛出空引用。constructor之后是否有任何事件发生,我可以在其中安全地放置导航代码???@Pankaj:在开始构建另一个页面之前,您应该将代码加载到该页面。如果无法加载事务,您不需要该页面,是吗?加载事务指南的结果,您希望显示哪个页面。我知道为什么会抛出错误,这是因为DateTime字段为空。我想要的是,当抛出这个错误时,页面应该导航到另一个页面,在那里他可以完成transaction@Pankaj:那么您应该在尝试dis之前尝试加载事务