抛出异常时触发的事件

时间:2015-09-22 13:49:50

标签: java exception

是否有可能在java中创建一个事件,如果抛出异常会触发该事件?

我想制作类似异常跟踪系统的东西,它将所有异常发送到中央服务器。

这是可能的,还是我必须在每个catch块中调用自己的方法?

1 个答案:

答案 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; 来提供最终的故障保护。它唯一的工作应该是记录任何其他地方都没有处理过的例外情况。但是,只有在发生大规模故障并且堆栈跟踪可能会丢失的情况下才会发生。如果仅仅因为某些输入的格式错误而被调用,那么您的设计和代码质量就会很差。