【Java面试题】注解,异常相关知识
什么是注解
注解本身是一个继承Annotation的特殊接口,它的实例化对象是Java运行时产生的动态代理类。
我们使用反射获取注解时,获取到的是Java运行过程中通过动态代理产生的对象,动态代理对象调用自定义注解方法。最终会调用AnnotationInvocationHandler的invoke方法,该方法会从memberValues这个Map中索引出对应值。而memberValues的来源是Java常量池
注解的解析方法有哪几种
- 编译时解析:比如@override注解,在编译时就会解析,检查方法是否重写
- 运行时通过反射解析:比如一些框架里的注解(@Value,@Component)都是通过发射进行处理的
介绍一下异常
异常是由Throwable及其子类构成。
错误:是程序运行环境错误,通常是程序无法处理的严重错误,比如程序崩溃,虚拟机错误
异常:
- 非运行时异常:编译时异常要求程序员必须提前捕获或抛出,通常是程序外部错误,比如文件不存在,类找不到。强制要求程序员提前处理异常,增强了程序的健壮性。
- 运行时异常:包括运行时异常和错误,通常是由程序错误导致。比如空指针异常,数组访问越界等问题。不需要程序员进行提前进行捕获或声明
Java异常处理有哪些
- throw手动抛出异常
- throws在方法上声明抛出异常
- try-catch 用于捕获并处理可能抛出的异常。try块中包含可能抛出异常的代码,catch块用于捕获并处理特定类型的异常。可以有多个catch块来处理不同类型的异常。
- fianlly 无论是否有异常都会去执行的代码块