捕获异常而不是进行检查时,try-catch需要多长时间(以纳秒为单位)(假设消息具有HashMap类型的查找性能)?
try { timestamp = message.getLongField( MessageField.TIMESTAMP ); } catch (MissingDataException e) { //Not all messages contain this field }
VS
if (message.contains(MessageField.TIMESTAMP)) timestamp = message.getLongField( MessageField.TIMESTAMP );
解决方法
简而言之,检查更快.你应该使用支票,因为:
>例外是昂贵的!必须创建堆栈跟踪(如果使用,例如记录等)并处理特殊流量控制>例外情况不应用于流量控制 – 例外情况属于“特殊情况”>例外是代码的说法“我无法处理这种情况,我放弃了……你处理它!”,但在这里你可以处理它…所以处理它