【发布时间】:2017-06-12 15:09:12
【问题描述】:
我有这个代码
protected void Page_Load(object sender, EventArgs e)
{
try
{
string connstr = ConfigurationManager.ConnectionStrings["dbConn"].ConnectionString;
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
SqlCommand cmdLoad = new SqlCommand(" *Connection string* ");
cmdLoad.CommandType = System.Data.CommandType.Text;
cmdLoad.Connection = conn;
SqlDataReader rd = cmdLoad.ExecuteReader();
StringBuilder resultsHtml = new StringBuilder();
while (rd.Read())
{
resultsHtml.Append("<tr class'odd gradeX'>");
resultsHtml.Append("<td>" + rd["region_location"].ToString() + "</td>");
resultsHtml.Append("</tr>");
}
resultsPlaceHolder.Controls.Add(new Literal { Text = resultsHtml.ToString() });
rd.Dispose();
conn.Close();
}
catch (Exception ex)
{
Response.Write("Cant connect to database");
throw ex;
}
}
在我的 web.config 中,我输入了正确的连接字符串,它当然会运行并执行 try 对吗?但是,当我更改连接字符串(数据库中没有的内容)时,我无法让Response.Write(); 向浏览器显示某些内容。如果 try 中出现异常,如何在屏幕上显示一些内容?
【问题讨论】:
-
您可以使用
Response.Redirect显示另一个页面,该页面包含存储在会话状态中的异常消息,而不是使用Response.Write将写入同一页面。 -
因为
throw ex会打断您的手动响应。 ASP 管道有自己的错误处理。删除throw ex(通常也应该是throw- 否则你会擦除堆栈strace) -
您还应该考虑使用Repeater 或其他类型的模板控件来显示您的数据,而不是使用字符串构建表格行并将它们转储到文字中。
标签: c# asp.net error-handling