java中异常的初步认识exception

it2022-05-05  116

数学类–最终类、方法都是静态 random—随机小数(大于等于0.0小于1.0)

--–-------------------------------**--*- 关于 异常

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

处理格式 try{调用方法}catch(异常名){ 处理过程}

java提供了一个关于异常的类 Throwable .class

Throwable包含的子类有--------异常(Excepation)和error

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

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

分为两种 1、运行时异常–编译没错,运行有错—可以处理也可以不处理

运行时异常总的父类为 RunTimeExcepition 2、编译时异常--编译有错 编译有错---一定要处理(抛出或者捕获)

例如 ArithmetException

ArrayIndexOutOfBoundException

NullPointerException

ClassCastException

若异常类不继承RunTimeExcption则默认是编译时异常

方法上必须抛出的异常是编译时异常 过程以及原理

捕获的方式 1、抛出的所有异常需要统一处理,捕获catch块里的异常类,需要时

这些抛出异常类的公共父类

2、抛出的异常进行单独处理,在catch块需要提供对应的catch进行分别处理;

3、抛出的异常需要进行统一处理时,jdk1.7提供了统一捕获,一组之间的异

常,通过 | 进行统一处理;

重载与重写的总结

重载是一个类中,方法名一致,参数列表不一致(和修饰符、返回值、抛出的异常

都没有关系)

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

1、方法签名必须保持一致

2、如果父类的方法返回值类型是基本类型/void,name子类就要和父类的方法返回值

类型保持一致

3、如果父类的方法返回值是引用数据类型,子类的方法返回值也要是引用类型,这个

引用类型要么和父类的一致,要么是父类的子类。

4、子类不能抛出比父类更大(范围)的异常,特指编译时异常;

5、子类的访问权限修饰符

public class Excption { public static void main(String[] args){

//调用方法 //方法抛出的异常,方法的调用者需要进行异常的处理 //try块–存放可能会出错的代码 //如果try块出错,就用catch块进行捕获处理 //try—catch一定会执行结束,执行下一个语句 //异常捕获报错后,后边代码继续执行 //实质是抛出异常的对象,捕获的也是异常的对象; //可能文件类型会出错,判断文件类型 //判断是否为null

/*try { String s = readTxt("C:1.java"); } catch (PathNotExitsExption e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); } catch (FileNotExitsExption e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); }catch(NullPointerException e){

// 打印异常的栈轨迹 e.printStackTrace();

}*/

//多异常 统一处理第一种方法 // 所有捕获异常的公共父类 /* try { String s = readTxt(“r:1.java”);

} catch (Exception e){ e.printStackTrace(); } */

/* (PathNotExitsExption e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); } catch (FileNotExitsExption e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); }catch(NullPointerException e){ // 打印异常的栈轨迹 e.printStackTrace();

} */

//异常的分组从jdk1.7开始

try { String s = readTxt("C:1.java");

// 分组,前提是这一组的异常处理方式是一样的; } catch (PathNotExitsExption |FileNotExitsExption |NullPointerException e) {/* // TODO Auto-generated catch block System.out.println(e.getMessage()); } catch (FileNotExitsExption e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); }catch(NullPointerException e){ // 打印异常的栈轨迹 e.printStackTrace(); */ }

System.out.println("读取文件完毕"); }

//抛出异常时,只能抛到方法上 private static String readTxt(String path) throws PathNotExitsExption, FileNotExitsExption { //对可能会不存在的路径进行判断 if(path.startsWith(“H”)){ //若有异常,抛出异常后后边的代码都不执行,例如 return “文件内容"就不会执行; throw new PathNotExitsExption(“你的代码有问题”); } //可能文件类型会出错,判断文件类型 if(!path.endsWith(”.txt")){

throw new FileNotExitsExption("文件类型有误");

} //判断是否为null if(path==null){ //空指针异常为运行时异常,可以处理也可以不处理 throw new NullPointerException(“参数为null”); } // 开始读取文件内容 return “文件内容”; } } //方法上可以抛出多个异常 //若java中没有此异常,则自定义异常类 class PathNotExitsExption extends Exception{ //属性 private String message;

public PathNotExitsExption(String Message){ this.message=Message; } public String getMessage(){ return message; }

} class FileNotExitsExption extends Exception {

public FileNotExitsExption(String message){

//调用父类有参构造,给父类属性赋值

super(message); }

}

finally 区域

这个区域表明不管有没有异常或者异常有没有被捕获,都必须执行的区域

---------------------------------------------–

关于集合 interface Collection

集合是储存对象的容器;

是一个长度可变且可以储存多个数据(对象)的容器

----泛型 用于指定集合元素的数据类型,元素类型只能是引用类型

int[]arr;arr的数据类型是数组类型,arr的元素是int类型

Collectionc;c的数据类型是引用类型,c中的元素是String类型

集合想存储基本类型的数据时 Integer in= 1;

Collection是集合的顶级接口;

比较重点的子接口:List、Set、Queue、

List----序列(列表),一个有序的集合

存入数据有序,可以根据下标操作集合元素

实现类 ArraysList、LinkedList、Vector、Stack

ArraysList(有序表)

底层是由数组来实现的,默认数组的长度是10,根据底层

右移运算进行扩容,每次在原来的基础上扩容一半 10 - 15 - 22 - 33


最新回复(0)