1. Общ преглед
В този бърз урок ще покажем как да регистрираме изключения в Java, използвайки API на SLF4J. Ще използваме API на slf4j-simple като реализация на регистрацията.
Можете да изследвате различни техники за регистриране в една от предишните ни статии.
2. Зависимости на Maven
Първо, трябва да добавим следните зависимости към нашия pom.xml :
org.slf4j slf4j-api 1.7.30 org.slf4j slf4j-simple 1.7.30
Най-новите версии на тези библиотеки могат да бъдат намерени в Maven Central.
3. Примери
Обикновено всички изключения се регистрират с помощта на метода error () , наличен в класа Logger . Има доста вариации на този метод. Ще проучим:
void error(String msg); void error(String format, Object... arguments); void error(String msg, Throwable t);
Нека първо инициализираме Logger , който ще използваме:
Logger logger = LoggerFactory.getLogger(NameOfTheClass.class);
Ако просто трябва да покажем съобщението за грешка, тогава можем просто да добавим:
logger.error("An exception occurred!");
Резултатът от горния код ще бъде:
ERROR packageName.NameOfTheClass - An exception occurred!
Това е достатъчно просто. Но за да добавим по-подходяща информация за изключението (включително проследяването на стека), можем да напишем:
logger.error("An exception occurred!", new Exception("Custom exception"));
Резултатът ще бъде:
ERROR packageName.NameOfTheClass - An exception occurred! java.lang.Exception: Custom exception at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)
При наличие на множество параметри, ако последният аргумент в оператор за регистриране е изключение, тогава SLF4J ще приеме, че потребителят иска последният аргумент да се третира като изключение вместо прост параметър:
logger.error("{}, {}! An exception occurred!", "Hello", "World", new Exception("Custom exception"));
В горния фрагмент съобщението String ще бъде форматирано въз основа на предадените подробности за обекта. Използвахме къдрави скоби като заместители за параметри String , предадени на метода.
В този случай изходът ще бъде:
ERROR packageName.NameOfTheClass - Hello, World! An exception occurred! java.lang.Exception: Custom exception at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)
4. Заключение
В този бърз урок разбрахме как да регистрираме изключения с помощта на API на SLF4J.
Фрагментите на кода са достъпни в хранилището на GitHub.