我正在审查/重做我的同事的代码,偶然发现了一个我以前从未见过的构造:
con = new SqlConnection("Data Source=....."); con.FireInfoMessageEventOnUserErrors = true; con.InfoMessage += new SqlInfoMessageEventHandler(myInfoMessage);
附:
void myInfoMessage(object sender, SqlInfoMessageEventArgs e) { foreach (SqlError err in e.Errors) { errors += err.LineNumber.ToString() + ": " + err.Message + "\r\n"; } }
现在据我所知,除了真正严重的错误之外,所有这些都可以被捕获(17 +类错误不会因为它们会保持异常).现在我得到的是,在某些情况下,您不希望抛出和捕获异常,而是希望它作为信息消息(或标志集).在这种情况下,我认为这是一个有用的结构.
在我正在审查的代码的情况下,在errors
执行sql命令之后立即检查,然后以文本形式抛出异常.
这让我想知道我是否正确地看到它否定了我在第一时间捕获信息中心的唯一优势.
所以我的问题是:捕获SQL连接的信息消息有什么好处?
或者换句话说,我看到唯一的一个优势还是我在那里忽略了其他优势?