Java大数据之路--异常

  • 异常


在java中针对问题的反馈以及处理的一套机制。 

  • Throwable----代表异常和错误的父类

ERROR(错误)   是一个合理(符合语法且代码执行逻辑没有问题)的应用程序,不应该处理

Exception(异常) 是一个合理的应用程序,出现之后可以处理也可以不处理 

1、运行时异常-----编译没错,运行有错,可以处理也可以不处理,总的运行时异常的父类,RuntimeException

AtrthmeticException

ArrayIndexOutOfBounds

NullPointerException

ClassCastException

NumberFormatException

2、编译时异常-----编译有错,一定要处理(抛出:后面所有的代码都不执行,捕获:当异常捕获之后后面的代码正常执行

CloneNotSupportException

ParseExcetion

  • 捕获的方式
  1. 抛出的所有异常需要进行统一处理,捕获时catch块里的异常类需要是这些抛出异常类的公共父类(向上造型)
  2. 抛出的所有异常进行单独处理,在catch块需要提供对应的catch进行分别处理 
  3. 当抛出的所有的异常需要进行分组处理,在catch块里对应的异常用 | 连接(jdk1.7分组捕获)统一处理
  • 重载和重写的总结

重载:重载是一个类中方法名一致,参数列表不一致(和权限修饰符,返回值类型,异常无关)。

重写:重写是在父子类中出现方法签名一致的方法,重写的原则:

1、父子类方法签名一致

2、如果父类的返回值类型是基本类型/void,则子类的返回值类型要和父类的返回值类型一致

3、如果父类的返回值类型是引用类型,则子类的返回值类型要和父类相同或者是父类返回值类型的子类

4、子类的权限修饰符范围要大于或等于父类的权限修饰符范围

5、子类抛出的编译时异常跟个数无关但是异常范围要小于或等于父类,运行时异常无关

  • finally

finally块一定要执行

public class ExceptionDemo7 {
    public static void main(String[] args) {
        System.out.println(m());
    }
    public static  int m(){
        int i=1;
        try {//不会捕获异常
            //把return 1进行挂起,就不执行了,去执行finally i=2 i++ i=3
            //又回到了刚才挂起的语句,紧接着执行挂起的语句 执行---return 1
            return i++;//先赋值再自加
        }finally {
            i++;
        }
    }
}
consle
值为1
public class ExceptionDemo8 {
    public static void main(String[] args) {
        System.out.println(m());
    }
    public static  Person m(){
        Person p1 = new Person();
        try{
            p1.name="lili";
            return  p1; //挂起的是地址值 挂起的不能改变
        }finally {
            p1.name="tom";
        }
    }
}
class Person{
    String name;
    int age;
    char gender;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }
}
consle
 为tom

 

你可能感兴趣的:(JavaSE)