Я работаю над небольшой функцией для проекта Kotlin и пытаюсь сделать аннотацию.
Я хочу "инкапсулировать" метод внутри try catch.
Давайте скажемЯ комментирую такой метод
@LogException
fun foo(){
//do something
}
Поэтому я хочу обработать аннотацию, чтобы позже сделать что-то вроде этого:
try{
foo()
}catch(exception: Exception){
// do something
//log
}
Возможно ли это?
Я начал с учебника по Kotlin (который не должен отличаться от Java) https://medium.com/@elye.project/annotation-tutorial-for-dummies-in-kotlin-1da864acc442 Но затем я использую это
@AutoService(Processor::class)
Чтобы зарегистрировать свой процессор, и я думаю,не инициализирует мою аннотацию.
Пока это мой код:
@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.SOURCE)
@Documented
annotation class LogException(
val name: String,
val statusCode: Int = 500
)
и мой процессор:
@AutoService(Processor::class)
class MyProcessor : AbstractProcessor() {
val logger = LoggerFactory.getLogger(MyProcessor::class.java)
override fun process(annotations: MutableSet<out TypeElement>?, roundEnv: RoundEnvironment?): Boolean {
//do something
logger.info("info")
return false
}
override fun getSupportedAnnotationTypes(): MutableSet<String> {
logger.info("info")
return mutableSetOf(LogException::class.java.canonicalName)
}
}
В данный момент я не могу видетьлюбой в моих журналах, или даже если я изменю его для исключения.
Я использую эту аннотацию в методе.
@LogException
fun foo(){
//do something
}
Есть идеи, что мне не хватает?
// делаем что-то и // регистрируем что-то, это просто пример, чтобы не вставлять весь код