gpt4 book ai didi

Java try-catch 与instanceof

转载 作者:行者123 更新时间:2023-12-01 08:45:51 25 4
gpt4 key购买 nike

我编写了一个错误句柄,如下所示。

类型#1

try{
// Logic
} catch (SpecificException e){
// Handle error-1
} catch (Exception e){
if(e.getCause() instanceof SpecificException){
// Handle error-1
}
// Handle error-2
}

但是,为了获得更好的清晰度和性能,我考虑改进代码,如下所示

类型#2

try{
// Logic
} catch (Exception e){
if(e instanceof SpecificException || e.getCause() instanceof SpecificException){
// Handle error-1
}
// Handle error-2
}

从 JVM 方面来看,哪种类型更好?

附注在这个例子中,我需要处理通用异常类型和特定异常类型,因此出现了处理问题。

最佳答案

从性能角度来看,不会有区别。

在 Java 中,catch block 的顺序很重要,您可以捕获指定异常的子类。这意味着 JVM 不能真正使用任何映射或索引,并且必须在异常表中进行查找,因此逻辑类似于一系列 if (e instanceof XXX) - 这基本上是您的第二种方式。

可读性方面是基于意见的,所以我不会对此发表评论。

JavaWorld has an article这解释了在字节码/JVM 级别上 catch 期间发生的情况。

关于Java try-catch 与instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43248895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com