Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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#能否在SQL连接错误时返回连接字符串?_C#_Sql Server - Fatal编程技术网

C#能否在SQL连接错误时返回连接字符串?

C#能否在SQL连接错误时返回连接字符串?,c#,sql-server,C#,Sql Server,我不希望人们在出现错误时获取连接字符串-示例: Try { // Some SQL code that fails } Catch (Exception sl) { MessageBox.Show("error - " + sl) } 他们是否有可能在异常sl中看到连接字符串?我怎样才能避免呢?此外,他们需要查看错误消息,但不需要连接字符串 我正在使用SQL Server 谢谢你的帮助 Yes异常可能包含敏感信息,不仅仅是连接字符串,甚至还有其他信息。作为一个好的实践,您需要捕

我不希望人们在出现错误时获取连接字符串-示例:

Try
{
    // Some SQL code that fails
}
Catch (Exception sl)
{
    MessageBox.Show("error - " + sl)
}
他们是否有可能在异常sl中看到连接字符串?我怎样才能避免呢?此外,他们需要查看错误消息,但不需要连接字符串

我正在使用SQL Server


谢谢你的帮助

Yes异常可能包含敏感信息,不仅仅是连接字符串,甚至还有其他信息。作为一个好的实践,您需要捕获信任边界上的所有异常,记录它们,然后抛出另一个异常,并发送一条友好消息通知客户机(调用者)。请记住,异常是一种让呼叫者知道由于意外的原因,您无法满足请求的方法。如果打电话的人能做点什么再试一次,你可以告诉他们。否则,你只需承认失败和过错是你的,你道歉并调查。他们是谁?这里,如果
他们
指的是应用程序用户,那么是的,他们在使用您的程序时无法看到连接字符串,直到程序以某种方式公开信息。如果您正确处理异常,并且没有在MessageBox中显示任何敏感信息,那么无论如何捕获基本
异常
都不是一个好的做法。如果您首先捕获
SqlException
,它的
ToString()
方法将不会显示连接字符串,您可以在这里的实现中看到:。但这不是重点。如果向最终用户显示异常消息,则它不应包含任何技术信息(但应在开发/集成环境中)。1.捕获/2。记录完整细节/3。用户友好地显示“技术故障”exception@chetan我认为,即使是默认的异常对话框也会显示信息,以便用户看到。但是,如果异常被应用程序吞并,那么用户将看不到它。不过,你还是相信这个应用程序,因为它也是另一个用户,所以没有什么区别。谢谢你的建议。他们是用户。我会考虑让它更人性化。