【发布时间】:2020-02-02 23:09:15
【问题描述】:
我正在为 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
}
知道我缺少什么吗?
//做某事和//记录某事只是不粘贴所有代码的示例
【问题讨论】:
标签: java kotlin annotations