Я заметил, что многие разработчики выполняют все виды проверок с помощью служебных классов, я имею в виду, например, SomeDefenseClass.checkState(arg > 4)
и так далее.Кажется, это довольно хороший и чистый способ проверки аргументов, состояния приложения, нулевых указателей и т. Д., При этом можно вызывать только IllegalStateException для проверки состояния.NPE для нулевого указателя и так далее.Но сейчас я сталкиваюсь с проблемой: я должен выбросить много разных исключений для различных видов недопустимых состояний, например ItemNotFoundException, UserNotAuthorizedException и т. Д.
Так что я могу придумать три решения этой проблемы, но, к сожалению,никто не кажется достаточно хорошим
1) Самый простой способ: вообще не использовать служебный класс и просто писать блоки if.(Просто не хотелось бы иметь столько
if (!foo) {
throw new SomeException(arg1);
}
if (!bar) {
throw new SomeOtherException(arg1, arg2);
}
// and so on
2) Чтобы написать другой метод stateCheck для каждого возможного исключения (Не очень хорошо, потому что у нас есть около 30 различных исключений и подсчет)
3) Чтобы написать один метод для класса защиты:
public static void checkState(boolean condition, Throwable t) {
if (!condition) {
throw t;
}
}
В любом случае в этом случае мне приходится создавать новый объект Exception каждый раз, когда выполняется проверка состояния, и это означает, что создаются тысячи совершенно ненужных объектов.и в конце дня это может стать проблемой:)
Итак, кто-нибудь может порекомендовать хорошее решение этой проблемы?
Спасибо