反对抛出异常的最佳实践

-3 java

在Java中:哪个是性能最高的代码,为什么?

if (x==1) {
    ....
} else if (x==2) {
    ....
} else if (x==3) {
    ....
} else if (x==4) {
    ....
}
... rest code here...

or 

try {
    if (x==1) {
        ... 
        throw MyException(1);
    }
    if (x==2) {
        ... 
        throw MyException(2);
    }
    if (x==3) {
        ... 
        throw MyException(3);
    }
    if (x==4) {
        ... 
        throw MyException(4);
    }
} catch(MyException MEx) {
    ... rest code here ...
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Tho*_*ens 13

在您的示例中,您正在使用流控制的异常.例外是昂贵的操作(或者,至少比块ifelse-if块更昂贵).例外情况仅应用于特殊情况.

此外,使用else if将确保一旦找到匹配的案例,检查就会停止.使用just if将始终检查所有这些,并且将执行任何匹配的情况.如果您有很多情况,并且最常见的情况下按顺序排列,则使用效果if-else-if会更好.