零基础学JAVA--Day27(注释+异常+异常处理方法)
注解(Annotation)
使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素
三个基本的Annotation:
1)@Override:限定某个方法,是重写父类方法,该注解只能用于方法
2)@Deprecated:用于表示某个程序元素(类,方法等)已过时
3)@SuppressWarnings:抑制编译器警告
@Override
class Father{//父类public void fly(){System.out.println("Fatherfly...");class Son extends Father //子类//1。@override注解放在fly方法上,表示子类的fly方法时重写了父类的fly//2。这里如果没有写@override还是重写了父类fly//3。如果你写了@0veide注解,编译器就会去检查该方法是否真的重写了父类的方法,如果的确重写了,则编译通过,如果没有构成重写,则编译错误@override//说明public void fly(){System.out.println("Sonfly....");}
}
Override使用说明
1.@Override表示指定重写父类的方法(从编译层面验证),如果父类没有fly方法,则会报错
2.如果不写@Override注解,而父类仍有publicvoidflyot,仍然构成重写
3.@Override只能修饰方法,不能修饰其它类,包,属性等等4.查看@Override注解源码为@Target(ElementType.METHOD),说明只能修饰方法
5.@Target是修饰注解的注解,称为元注解
@Deprecated
用于表示某个程序元素(类,方法等)已过时,不推荐使用,但仍然可以使用
@Deprecated的说明
1.用于表示某个程序元素(类,方法等)已过时
2.可以修饰方法,类,字段,包,参数 等等
3. @Target(value=(CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD,PACKAGE, PARAMETER,TYPE)
4.@Deprecated的作用可以做到新l旧版本的兼容和过渡
@SuppressWarnings
1、当我们不希望看到这些警告的时候,可以使用SuppressWarnings注解来抑制警告信息
2、在{" "}中,可以写入你希望抑制(不显示)警告信息
3、可以指定的警告类型有(不完整)
4、关于SuppressWarnings作用范围是和你放置的位置相关。比如@SuppressWarnings放置在main方法,那么抑制警告的范围就是main

异常
int num = 10;
int num2 = 0;
//1。num1 /num2 =>10/0
//2。当执行到num1/num2因为num2=0,程序就会出现(抛出)异常ArithmeticException
//3。当抛出异常后,程序就退出,崩溃了,下面的代码就不在执行
//4。大家想想这样的程序好吗?不好,不应该出现了一个不算致命的问题,就导致整个系统崩溃
//5。java设计者,提供了一个叫异常处理机制来解决该问题(try-catch)
int res =num1 /num2;
//如果程序员,认为一段代码可能出现异常/问题,可以使用try-catch异常处理机制来解决
//从而保证程序的健壮性
//将该代码块->选中->快捷键ctrl+alt+t->选中try
try {//尝试一下,即使程序出错了,会抛出错误。程序仍然继续执行int res =num1/num2;
catch (Exception e) {e.printStackTrace();
}
基本概念
Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)
执行过程中所发生的异常事件可分为两类
1)Error(错误):Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError[栈溢出]和OOM(out of memory),Error是严重错误,程序会崩溃。
2)Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如空指针访问,试图读取不存在的文件,网络连接中断等等,Exception分为两大类:运行时异常[ ]和编译时异常[ ]。
异常体系图


异常体系图的小结
1.异常分为两大类,运行时异常和编译时异常
2.运行时异常,编译器检查不出来。一般是指编程时的逻辑错误,是程序员应该避免其出现的异常。java.lang.RuntimeException类及它的子类都是运行时异常
3.对于运行时异常,可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响
4.编译时异常,是编译器要求必须处置的异常。
异常处理
try{ }catch(Exception e){ }finally{}

throws处理

基本介绍
1)如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。
2)在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。
public class Throws01 {public static void main(String[] args) {void f1() throws FileNotFoundException {//创建了一个文件流对象//1。这里的异常是一个FileNotFoundException编译异常//2.使用前面讲过的try-catch-finally//3。使用throws,抛出异常,让调用f1方法的调用者(方法处理)//4,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类//5。throws关键字后也可以是异常列表,即可以抛出多个异常 FileInputstream fis = new FileInputstream("d://aa.txt");}}
}
一些细节
1) 对于编译异常,程序中必须处理,比如try-catch或者throws(二选一)
2)对于运行时异常,程序中如果没有处理,默认就是throws的方式处理[举例]
3)子类重写父类的方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出的异常的类型的子类型[举例]
4)在throws过程中,如果有方法try-catch,就相当于处理异常,就可以不必throws

——————————————————————————
Day 27 End
离回家还有62天~
