我有一个返回boolean
类型的方法:
boolean activate() {
try {
} catch(IOException e){
} catch (FileNotFoundException e){
}
}
我想知道是否需要退货,false
或者true
是否有异常。
我有一个返回boolean
类型的方法:
boolean activate() {
try {
} catch(IOException e){
} catch (FileNotFoundException e){
}
}
我想知道是否需要退货,false
或者true
是否有异常。
你能不能放:
boolean activate() {
try {
// Do Something risky...
return true;
} catch(IOException e){
return false;
}
catch (FileNotFoundException e){
return false;
}
}
只有您知道激活失败时应该返回什么。
如果您不知道,我建议将异常从方法中抛出,并让调用者处理。
这是一个设计问题(因此很可能被关闭),但它确实证明了一个非常重要的点:合同。您的功能的合同是什么?
/** This function will activate <a thing> and report success or failure to do so.
* @return true if <thing> is activated, false otherwise.
*/ //THIS CONTRACT IS SUPER IMPORTANT WHEN THINKING ABOUT CODING
boolean activate() {
try {
//Some code
return true;
} catch(IOException e){
Log.error("When attempting to activate <thing> an IOException was thrown.");
return false;//It wasn't activated! There was an IO exception, therefore follow the contract.
} catch (FileNotFoundException e){
Log.error("When attempting to activate <thing> a FileNotFoundException was thrown.");
return false;//It wasn't activated! There was a different exception, therefore follow the contract.
}
}
但是,您会注意到日志记录的存在。为什么这很重要?因为您的代码应该响亮但持久。在这种情况下; 它返回一个合同上正确的响应(真/假),因此任何调用它的代码都知道它是否成功并且可以正常运行而不会出现尴尬的异常处理或整个程序优雅地崩溃。这意味着它是持久的代码。但是,日志记录让它变得响亮:这意味着,如果您正在监视应用程序的运行状况,您将很容易看到存在问题,并且准确地发现问题出在哪里。然后你可以修复它。
合同。耐用性。能见度。
您应该确保在生产代码中以某种方式使用错误,但基本版本是:
boolean activate() {
try {
} catch(Exception e){
return false;
}
return true;
}