I’ve got this method I’m working on (I think that’s the name) and it essentially tries to match a part of a string and then return the proceeding part of the string – that part I’ve got, easy stuff. The method is of type String.
When my method fails to find the pattern in the string I want it to return an empty string. I also want to send something along with the empty string to go “hey, I didn’t find your key” but I want this to be optional.
This is essentially what I want the method to do:
public static String getKey(String key) throws KeyNotFoundException {
if (key.equals("something")) {
return "great";
} else {
throw new KeyNotFoundException();
return "";
}
}
But the problem with this code is that the return ""; is obviously unreachable due to throw new KeyNotFoundException();.
If I was going to call this method I’d have to use the try {} catch(KeyNotFoundException knf) {} block. It’s this block that I want to make optional however.
If I choose to be oblivious to the fact the key was not found (e.g. don’t use try catch) then I just want to be given the empty string on return.
But I also want to be able to surround it with a try-catch block if I need to know whether the key was found for my operation to complete correctly.
I think I’m going about this the wrong way but I can’t seem to figure out an alternative (new to Java), could anyone shred some light on this please?
The usual way to do this would be to write two methods, one which returns a default value, and one which throws an exception. You can have one of these call the other, to avoid duplication:
The caller can then choose which one to call, based on their needs: