我有这个方法,我正在努力(我认为这是名称),它本质上试图匹配字符串的一部分,然后返回字符串的前一部分 - 我得到的部分,简单的东西.该方法的类型为String.
当我的方法无法在字符串中找到模式时,我希望它返回一个空字符串.我也想发送一些带有空字符串的东西去"嘿,我没找到你的钥匙",但我希望这是可选的.
这基本上是我想要的方法:
public static String getKey(String key) throws KeyNotFoundException {
if (key.equals("something")) {
return "great";
} else {
throw new KeyNotFoundException();
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
但是这个代码的问题return "";在于显然无法访问throw new KeyNotFoundException();.
如果我打算调用这个方法,我必须使用该try {} catch(KeyNotFoundException knf) {}块.我想要这个块是可选的.
如果我选择忽略未找到密钥的事实(例如,不要使用try catch),那么我只想在返回时获得空字符串.
但是如果我需要知道是否找到了正确完成操作的密钥,我还希望能够用try-catch块包围它.
我想我会以错误的方式解决这个问题,但我似乎无法想出一个替代方案(Java的新手),有人可以对此有所了解吗?
Tom*_*son 10
执行此操作的常用方法是编写两个方法,一个返回默认值,另一个抛出异常.您可以让其中一个调用另一个,以避免重复:
public static String getKey(String key) throws KeyNotFoundException {
String value = getOptionalKey(key);
if (value.equals("")) throw new KeyNotFoundException(key);
return value;
}
public static String getOptionalKey(String key) {
if (key.equals("something")) {
return "great";
} else {
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
然后,呼叫者可以根据需要选择呼叫哪一个:
String value = getOptionalKey("uma"); // oblivious
try {
String value = getKey("uma"); // cognisant
}
catch (KeyNotFoundException e) {
// panic
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2320 次 |
| 最近记录: |