fail-fast & fail-safe

发布时间 2023-08-31 14:20:05作者: ww0809

fail-fast & fail-safe

先放一篇大佬的文章:一文彻底弄懂fail-fast、fail-safe机制(带你撸源码) - 知乎

在学习Java的ArrayDeque原理实现的时候,查的资料里出现了fail-fast。

fail-fast就是一种错误检测机制,一旦检查到可能有错误就马上抛出异常,程序不再往下进行。

public User queryUserById(String userId) {
    if(userId == null || ("").equals(userId)) {
        throw new RuntimeException("error userId"); // 抛出异常 结束程序
    }
    // 程序其他部分
}

比如在Java中,利用迭代器遍历某集合,如果在这个过程中对被遍历对象的结构做了修改,就会有Concurrent Modification Exception异常抛出。ArrayDeque的迭代器也被设计为fail-fast。

和他同时出现的还有另一种检测机制——fast-safe,也就是在实现迭代器的时候没有设置抛出ConcurrentModificationException的异常,从而避免了fail-fast。