海南住房和城乡建设厅网站登陆,从seo角度做网站流量,网站建设哪家go,设计一个网页的策划书Allison Anders等人的《四个房间》#xff08;1995#xff09;。 我不断重复同样的错误。 因此#xff0c;该停止并制定规则以防止这种情况了。 错误不是致命的#xff0c;但很烦人。 当查看生产日志时#xff0c;经常会看到类似File doesnt exist #xff… Allison Anders等人的《四个房间》1995。 我不断重复同样的错误。 因此该停止并制定规则以防止这种情况了。 错误不是致命的但很烦人。 当查看生产日志时经常会看到类似File doesnt exist 并且问自己什么文件 它应该在哪里存在 服务器尝试如何处理它 崩溃前一秒钟发生了什么 日志中没有答案这完全是我的错。 我要么1不重新抛出要么2在不提供上下文的情况下重新抛出。 两者都是错的。 代码如下所示 if (!file.exists()) {throw new IllegalArgumentException(File doesnt exist);
} 它也可能看起来像这样 try {Files.delete(file);
} catch (IOException ex) {throw new IllegalArgumentException(ex);
} 这两个示例都说明了处理涉及异常并报告异常的情况的风格不足。 怎么了 异常消息不够彻底。 它们根本不包含来自其来源的任何信息。 他们应该这样看 if (!file.exists()) {throw new IllegalArgumentException(String.format(User profile file %s doesnt exist,file.getAbsolutePath()));
} 第二个示例应如下所示 try {Files.delete(file);
} catch (IOException ex) {throw new IllegalArgumentException(String.format(Cant delete user profile data file %s,file.getAbsolutePath()),ex);
} 看到不同 这看起来像是冗余代码但事实并非如此。 当然当我编写所有这些内容时我并不真正在乎日志和异常。 我不是真的希望这个文件不存在。 但是我应该。 应该有一条规则每次我们抛出或重新抛出时异常消息都必须尽可能详细地描述问题。 当然我们不能忘记安全性和冒着将任何敏感信息例如密码信用卡号等放入异常消息的风险。此外必须在更高级别上尽可能多地向异常捕获程序公开这些信息。 抛出异常实际上是将问题升级到更高级别的管理。 想象一下老板要我安装新服务器。 几小时后我回到他身边说“我失败了我失败了。 抱歉。” 这听起来很奇怪。 他会要求更多细节。 为什么我失败了 到底出了什么问题 可以做不同的事情吗 等等。 这样的代码实际上是对客户不尊重的标志 throw new IllegalArgumentException(File doesnt exist
); 我必须更加详细并提供更多细节。 我不是一个人犯这个错误。 我到处都看到它这确实使调试困难尤其是在生产中几乎不可能立即重现问题。 因此请在您的异常消息中更加详细。 我将在代码中执行同样的操作 还有一件事然后再走。 在大多数OOP语言中未检查异常是很不幸的 这意味着捕获异常不是强制性操作。 尽管如此我还是建议您始终捕获添加上下文并重新抛出它们。 这似乎是纯净的噪音但事实并非如此 只是使您的方法更小并确保从它们发出的所有异常都具有有关其来源的足够信息。 您将为自己和其他人大有帮助。 翻译自: https://www.javacodegeeks.com/2015/12/throwing-exception-without-proper-context-bad-habit.html