是否有可能在java中创建一个事件,如果抛出异常会触发该事件?
我想制作类似异常跟踪系统的东西,它将所有异常发送到中央服务器。
这是可能的,还是我必须在每个catch块中调用自己的方法?
答案 0 :(得分:2)
处理此问题的推荐方法是使用日志记录(例如SLF4J和Logback)。您可以配置记录器以将消息发送到集中式日志记录服务器,但您仍需要手动记录异常,如果适用,请对其进行处理。
如果你希望以自动方式忘记异常,那是不可能的。如果您打算使应用程序健壮且易于调试,则异常处理并不像看起来那么容易。
一个很好的额外"技巧"是使用StringBuilder SBsmallSquares = new StringBuilder();
SqlConnection sqlConnection1 = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
using (sqlConnection1)
{
SqlCommand cmd = new SqlCommand();
SqlDataReader ReaderPopup;
cmd.CommandText = "spUnionServices";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = sqlConnection1;
cmd.Parameters.AddWithValue("@offset", offset);
cmd.Parameters.AddWithValue("@fetch", fetch);
cmd.Parameters.AddWithValue("@freetext", fts);
sqlConnection1.Open();
ReaderPopup = cmd.ExecuteReader();
if (ReaderPopup.HasRows)
{
while (ReaderPopup.Read())
{
//creating the string to return. Here there is no problem.
}
return SBsmallSquares.ToString();
}
else return string.Empty;
来提供最终的故障保护。它唯一的工作应该是记录任何其他地方都没有处理过的例外情况。但是,只有在发生大规模故障并且堆栈跟踪可能会丢失的情况下才会发生。如果仅仅因为某些输入的格式错误而被调用,那么您的设计和代码质量就会很差。