我想知道将 throw 封装在方法中并在返回方法中调用它是否是一个好习惯
int returnMethod(){
if(ok){
return 1;
}
alwaysReturnRuntimeException();
return 1; //Fake
}
void alwaysReturnRuntimeException(){
if(specificError){
throw new OneRuntimeException();
}
// General error
throw new GeneralRuntimeException();
}
或者最好生成异常,但不要抛出。只返回它并把它扔到父方法上。
int returnMethod(){
if(ok){
return 1;
}
throw buildException();
}
void buildException(){
if(specificError){
return new OneRuntimeException();
}
// General error
return GeneralRuntimeException();
}
最佳答案
我想说,决定必须抛出哪种异常的方法是重用代码的有效方法,但前提是它确实适合您的应用程序设计(在不了解有关代码其余部分的更多详细信息的情况下,我可以' t 给出一个有充分根据的替代方案)。但是,我强烈建议不要在代码中使用未经检查的异常(但这是另一个故事,而且有点主观)。
如果您确实需要这种方法,有两个建议:
- 明确地命名您的抛出方法,以显示其直接意图,例如
throwMyException()
(对于不返回任何内容的方法来说,alwaysReturnRuntimeException()
是一个不好的名称) - 即使编译器在未检查异常的情况下不要求这样做,也要在方法签名中声明可抛出异常,以避免混淆。
你的代码可能是这样的:
int returnMethod(){
if(!ok){
throwRuntimeException();
}
return 1;
}
void throwRuntimeException() throws OneRuntimeException, GeneralRuntimeException {
if(specificError){
throw new OneRuntimeException();
}
// General error
throw new GeneralRuntimeException();
}
关于java - 将运行时异常封装在retun方法上,或者生成异常方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54573350/