2008-11-25 58 views
1

好的,所以花了很多时间在一段代码中调试一个愚蠢的输入错误后,我很好奇为什么发生了特定的操作而不是一个例外。这为什么会导致Windows身份验证出现而不是异常?

首先是问题代码。

Public Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn 
    Dim hl As New HyperLink 
    AddHandler hl.DataBinding, AddressOf Me.BindData 
    container.Controls.Add(container) 
End Sub 

明显的问题是,我们正试图将容器添加到自己,这是我没有料想到会引起异常。但是,它会导致页面提示用户输入其登录凭据(浏览器中的Windows身份验证)。

有没有人有一个想法,为什么这是这种情况,为什么一个例外或其他事情没有发生?

编辑

的原因的问题是,由于这个错误,页面变得毫无用处,并提示登录Windows,而不是给堆栈溢出异常或任何其他异常。

+0

@the OP:如果你是upvoting任何建设性的答案没关系。但您可能需要等待一段时间,并在此期间取消选票。您的问题仅在“未回答”视图中显示,而没有回复,而且有些人确实遵循了该观点。 – 2008-11-25 20:53:50

+0

@Joel Nope,没有赞扬我......我可能不得不放弃这一个。 – 2008-11-27 03:41:43

回答

1

您认为发生异常的地方在哪里?在这段代码中,没有理由产生异常。然而,不合逻辑的是,将控件嵌套在控件中仍然有效。它不会很好地绘制,除非绘画/绘图层特别注意到嵌套,那么可能会导致堆栈溢出/无限循环。但这不会发生在这里,但在布局/绘画。

+0

增加了对问题的澄清,它可能是在布局/绘画期间,但最终结果是此代码未生成异常,但提示用户进行Windows身份验证。 – 2008-11-25 20:38:36

1

控件是可以任意嵌套的东西;任何属于Control的东西都可以有其他控件的集合(我相信这是明显的原因)。也就是说,将给定对象的引用添加到其内部的这些对象的集合中并没有什么“错误”。虽然多余,但并不例外。

相关问题