例如,如果有任何sqlException,我必须捕获异常.
我正在使用using子句并在其中嵌入try / catch块.这是代码:
public static voID LogError(string error,string message){ using (sqlConnection conn = new sqlConnection(ConfigurationManager.AppSettings["connStringWeb"])) using (sqlCommand cmd = new sqlCommand("INSERT INTO errorLogtable (errorTime,errorType,error) VALUES(@errorTime,@errorText,@errorMsg)")) { cmd.CommandTimeout = 300; cmd.Connection = conn; cmd.Prepare(); cmd.Parameters.AdDWithValue("@errorTime",DateTime.Now); cmd.Parameters.AdDWithValue("@errorText",error); cmd.Parameters.AdDWithValue("@errorMsg",message); try { conn.open(); int i = cmd.ExecuteNonquery(); } catch { } } }}
我的问题是,我的sqlConnection和sqlCommand是否会在异常的情况下被处理掉,这是一个很好的方法来处理它,或者我应该只使用try / catch / finally块的旧时尚方法?
解决方法 在您的情况下,异常会在使用中被捕获,并且在您离开using块时执行dispose.但即使你将try块放在try catch之外并抛出异常,也会调用dispose.
public static voID LogError(string error,string message){ try { using (sqlConnection conn = new sqlConnection(ConfigurationManager.AppSettings["connStringWeb"])) using (sqlCommand cmd = new sqlCommand("INSERT INTO errorLogtable (errorTime,@errorMsg)")) { cmd.CommandTimeout = 300; cmd.Connection = conn; cmd.Prepare(); cmd.Parameters.AdDWithValue("@errorTime",DateTime.Now); cmd.Parameters.AdDWithValue("@errorText",error); cmd.Parameters.AdDWithValue("@errorMsg",message); conn.open(); int i = cmd.ExecuteNonquery(); } } catch {}}总结
以上是内存溢出为你收集整理的c# – 如果在“using”语句中使用try / catch,是否会处置一次性资源?全部内容,希望文章能够帮你解决c# – 如果在“using”语句中使用try / catch,是否会处置一次性资源?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)