随笔分类 - Java
摘要:背景 反射在Java中非常重要,是Java区别于其他编程语言的一大特性。Java中的AOP切面、动态代理等看起来像黑魔法一样的技术,就离不开反射、字节码等。这些技术能在不侵入原有代码的情况下,做一些增强的非功能性需求。多提一句,千万不要把业务逻辑放在AOP切面、动态代理里,否则后人绝对会骂。 AOP
阅读全文
摘要:通常,如果我们要在程序中做一个耗时的操作(例如调用其他外部模块),一般会通过异步的方式执行。使用Spring @Async注解,修饰在需要异步执行的方法上,即可方便地让代码在新线程中异步执行。
对于Spring @Async注解的方法,如何进行异常处理呢?楼主想到了2种方法。方法一:配置AsyncUncaughtExceptionHandler(对于无返回值的方法),
方法二:通过AsyncResult捕获异常(对于有返回值的方法)
阅读全文
摘要:平时大家的工作一般是基于开发框架进行的(比如Spring MVC,或Spring Boot),所以会有相应特定的异常处理方法,这篇文章要介绍的就是web应用中的异常处理。
想快速解决问题的小伙伴可以只看“解决办法”,想进一步了解细节的小伙伴还可以看“深入剖析”部分。
阅读全文
摘要:在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了。那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相应的处理呢?
也许有人会觉得,很简单嘛,直接在父线程启动子线程的地方try ... catch一把就可以了,其实这是不对的。楼主想到了3种通用解决办法,分享给大家。
阅读全文