零基础学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天~

相关推荐
CoderYanger2 分钟前
递归、搜索与回溯-综合练习:28.不同路径Ⅲ
java·算法·leetcode·深度优先·1024程序员节
鱼丸花生2 分钟前
Java 数组详解
java
用户84913717547163 分钟前
Tomcat 为什么要“造反”?深度解析 Java 类加载机制的“守”与“破”
java·jvm
沐知全栈开发3 分钟前
jEasyUI 设置排序
开发语言
code bean4 分钟前
【C++ 】C++ 与 C#:using 关键字、命名空间及作用域解析符对比
开发语言·c++·c#
CAE虚拟与现实4 分钟前
C# 调用 DLL为什么不像 C/C++调用 DLL 时需要lib库
开发语言·c++·c#·动态链接库·dll库·lib库
Larry_Yanan5 分钟前
Qt线程使用(一)直接继承QThread类
开发语言·c++·qt·ui
vortex56 分钟前
Bash One-Liners 学习精要指南
开发语言·chrome·bash
jiayong239 分钟前
Elasticsearch Java 开发完全指南
java·大数据·elasticsearch
321茄子10 分钟前
MySQL 事务隔离性及锁
java·数据库·mysql