java高级语法3:异常和注解

异常

异常的概念

1567956906711
img
stackOverFlow:栈溢出

Exception分为检查型异常非检查型异常。检查型异常必须在源码中进行捕获处理,这是编译检查的一部分。除了RuntimeExceion及其子类之外的异常都是检查型异常。非检查型异常就是所谓的RuntimeExceion,类似NullPointerException,ArrayIndexOfBoundException就是非检查型异常,通常是可以通过编码避免的逻辑错误,具体根据需要判断是否需要捕获,编译期不检查(注意同样的,运行时异常也是可以捕获的),如果抛出了非检查型异常,那就是编码逻辑有问题,要解决。

常见异常:

1567957129912

常见Error:

StackOverFlowError(栈溢出,在无限递归时常见)

OutOfMemoryError(内存溢出)

捕获异常

1567957185923
1567957204561
注意,我们是不应该捕获Error,而不是不能捕获Error:Error是正常情况下不大可能出现的情况,绝大部分的Error都会导致程序状态不正常,不可恢复,既然是非正常情况,所以不便也不需要处理。但是既然Error也是继承于Throwable的,说明它也是可以被捕获的,只是我们通常不会这样做而已

/**
 * @program: OJ
 * @description:尝试捕获Error
 * @author: JiaDing
 * @create: 2020-03-29 17:30
 **/
public class CatchError {
    public static void main(String[] args) {
        final String errorMessage="I'm an error,please catch me";
        try{
            throw new Error(errorMessage);
        }catch (Throwable e){
            e.printStackTrace();
        }
        System.out.println("捕捉完成");
    }
}

在try中的代码,报错后就结束,不会执行try中剩下的部分

1567957626133

抛出异常

throw exception

1567958104966
抛出异常后在调用位置去捕获处理

main方法也可以抛出异常,但是抛出就直接甩到虚拟机了,程序中对其将无法处理,此时就直接结束程序的运行所以一般不这样做

重写方法不能抛出比被重写方法范围更大的异常类型,也就是说,子类不能抛出比父类更大范围的异常

人工抛出异常:

1567958149640
1567958204506
用户自定义异常类必须继承现有异常类

JAVA提供的异常类一般是够用的,只有特殊情况才需要自定义,情况少见


注解

关于注解,更好的方式是看这篇专业的文章:https://blog.csdn.net/javazejian/article/details/71860633

1568531966023
1567995858440
1567995905493
1568532709480
1567995982905
@Deprecated过时方法不是不能调用,只是显示出来,便于选择和之后的迭代

示例:

1568532297222
这些内容可以被抽取到dlc文件中

javadoc test1.java//抽取注解到文档中

生成的文件们:

1568532400284
生成的文档页面(HTML):

1568532434656
1567996077532
1567996399302
@Target(ElementType.FIELD)//声明这个注解类是给其他类的属性做注解

@Rectention(RetentionPolicy.RUNTIME)//定义注解的生命周期

@Documneted//表示将注解写到文档中

@interface TestAnn{

? public int id() default 0;//default是默认值

public String desc() default "";

}

使用:

1567996338339
对一个属性进行注解

1567996392412
注解可以用来替换配置文件的作用以简化操作

示例,依然以之前使用配置文件来调用任意类的任意方法的例子为例:

1568534902021
1568535126089

1568535173886

posted @ 2020-02-26 17:15  别再闹了  阅读(1022)  评论(0编辑  收藏  举报