Это не хороший способ обработки ошибок, потому что:
- Если что-то пойдет не так, ни вы, ни кто-либо, кто вызывает ваш код, не поймут, почему операция не удалась.
- Что вы скажете конечным пользователям?«Что-то пошло не так, но мы понятия не имеем, что, так что вы ничего не можете с этим поделать, и не пытайтесь рассказать нам тоже»?
Если вы не уверены влучший способ справиться с исключением, не ловить его вообще.Вместо этого объявите свой метод, чтобы бросить это, и позвольте вызывающей стороне, которая готова обработать это, иметь дело с исключением.Например, пользовательский интерфейс может перехватить исключение и предоставить некоторые его детали конечному пользователю.
private Optional<JSONObject> testFile(Optional<String> jsonFileContent)
throws JSONException
{
if (jsonFileContent.isPresent())
{
return Optional.of(new JSONObject(jsonFileContent.get()));
}
else
{
return Optional.empty();
}
}
Примечание по отлову исключений:
Большинство классов, которые происходят от RuntimeException в JavaSE предназначены для указания ошибок программиста.Примерами могут быть:
- NullPointerException
- IndexOutOfBoundsException
- IllegalArgumentException
Когда это происходит, они указывают, что логика вашей программы нарушена.Вы не должны оправляться от них;Вы должны заметить их и исправить код ответственным.Их перехват и подавление не приведут к тому, что ваша программа заработает.
Такие исключения никогда не должны обнаруживаться.Это также означает, что вы никогда не должны писать catch (Exception …)
или catch (RuntimeException …)
.Если вам нужно написать блок catch
, перехватывайте только те исключения, которые вам абсолютно необходимо перехватить.
Но лучшим вариантом будет просто не перехватывать что-либо и объявить свой метод с помощью throws JSONException
.