零基础学JAVA--Day27(注释+异常+异常处理方法)

注解(Annotation)

使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素

三个基本的Annotation:

1)@Override:限定某个方法,是重写父类方法,该注解只能用于方法

2)@Deprecated:用于表示某个程序元素(类,方法等)已过时

3)@SuppressWarnings:抑制编译器警告

@Override

java 复制代码
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.可以修饰方法,类,字段,包,参数 等等

  1. @Target(value=(CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD,PACKAGE, PARAMETER,TYPE)

4.@Deprecated的作用可以做到新l旧版本的兼容和过渡

@SuppressWarnings

1、当我们不希望看到这些警告的时候,可以使用SuppressWarnings注解来抑制警告信息

2、在{" "}中,可以写入你希望抑制(不显示)警告信息

3、可以指定的警告类型有(不完整)

4、关于SuppressWarnings作用范围是和你放置的位置相关。比如@SuppressWarnings放置在main方法,那么抑制警告的范围就是main

异常

java 复制代码
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后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。

java 复制代码
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天~

相关推荐
Craaaayon2 小时前
如何选择两种缓存更新策略(写缓存+异步写库;写数据库+异步更新缓存)
java·数据库·redis·后端·缓存·mybatis
AAA卷不动了2 小时前
JVM(二)------ 类加载、初始化与单例模式的联系
java·jvm·单例模式
一 乐2 小时前
点餐|智能点餐系统|基于java+ Springboot的动端的点餐系统小程序(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·小程序·论文
视图猿人2 小时前
RxJS基本使用及在next.js中使用的例子
开发语言·javascript
墨雪不会编程2 小时前
C++的基础语法篇一 ——命名空间
开发语言·c++
墨客希2 小时前
安装 awscli
开发语言
少许极端2 小时前
算法奇妙屋(十)-队列+宽搜(BFS)
java·数据结构·算法·bfs·宽度优先·队列
天天进步20153 小时前
Python全栈项目:结合Puppeteer和AI模型操作浏览器
开发语言·人工智能·python
唐僧洗头爱飘柔95273 小时前
【GORM(3)】Go的跨时代ORM框架!—— 数据库连接、配置参数;本文从0开始教会如何配置GORM的数据库
开发语言·数据库·后端·golang·gorm·orm框架·dsn