java – 如何在执行catch块时设置默认操作?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何在执行catch块时设置默认操作?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1716字,纯文字阅读大概需要3分钟。
内容图文
![java – 如何在执行catch块时设置默认操作?](/upload/InfoBanner/zyjiaocheng/736/52c7ab45da434ae79cb462e7db6964ff.jpg)
出于调试目的,我希望我的Java应用程序在执行catch子句时在MySql数据库上上载日志文件,而不管抛出哪个异常.
我认为最糟糕的解决方案是将我的上传器方法添加到我的代码中的每个catch中(正如我已经为创建我的日志文件所做的那样).这显然不是优雅的方法,只要它重复代码.所以我的问题是:它存在(或许在项目中)可以设置默认操作,只要满足catch子句就会执行它?
解决方法:
一种选择是使用日志框架(无论你是自己编写还是使用现有的解决方案),所以你可以这样做:
try{}
catch(Exception e) {Logger.logExceptionToDatabase(e); }
在这里你可以处理上传到你的数据库.但是,我不认为每次执行catch块时将错误日志上传到数据库中都非常有用.我会将它们写成单独的文本日志并收集它们,并且只是不时地或通过用户请求将它们保存到数据库中.
问题本身:这是不可能的,但是有一个finally块在相应的try块之后执行(只要JVM没有在try块中终止).也许你可以引入一些TransactionResult并为每个成功和失败做一个日志记录,而不是:
TransactionResult transactionResult;
try{
//do work and at the last line in the try after each operation that could
have failed has been executed set your transactionResult variable
transactionResult = new SuccessTransaction();
}
catch(Excpetion e) { transactionResult= new FailureTransaction();}
finally {Logger.logTransaction(transactionResult); }
和相应的班级:
public interface TransactionResult{
public void writeLog();
}
以及交易结果的一个例子:
public class SuccessTransaction implements TransactionResult{
private String resultStatus;
public SuccessTransaction() { this.resultStatus = "success"; }
public void writeLog() { System.out.println(this.resultStatus); } //or whatever you want to do with your result
}
你的失败实例也是如此.
更新
正如您所述,有许多异常,您也可以将您的异常传递给具体的FailureTransaction,而不是简单地将该消息写出或收集列表中的所有失败,然后您可以跟踪已触发的异常.
内容总结
以上是互联网集市为您收集整理的java – 如何在执行catch块时设置默认操作?全部内容,希望文章能够帮你解决java – 如何在执行catch块时设置默认操作?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。