尝试Catch Performance Java

DD.*_*DD. 6 java performance try-catch

捕获异常而不是进行检查时,try-catch需要多长时间(以纳秒为单位)(假设消息具有HashMap类型的查找性能)?

    try {
        timestamp = message.getLongField( MessageField.TIMESTAMP );
    } catch (MissingDataException e) {
        //Not all messages contain this field
    }
Run Code Online (Sandbox Code Playgroud)

VS

if (message.contains(MessageField.TIMESTAMP))
    timestamp = message.getLongField( MessageField.TIMESTAMP );
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 23

总之,检查的方式更快.你应该使用支票,因为:

  • 例外是昂贵的!必须创建堆栈跟踪(如果使用,例如记录等)并处理特殊流量控制
  • 不应将异常用于流量控制 - 例外是针对"例外"
  • 例外是代码的说法"我无法处理这种情况而且我放弃了......你处理它!",但在这里你可以处理它...所以处理它

  • +1:堆栈跟踪在使用之前不会完全创建(对于大多数例外情况,它不需要)所有相同的例外不仅昂贵,而且应该用于特殊条件. (2认同)