java第五周学习总结

时间:2021-12-31 15:40:44

学号20145336 《Java程序设计》第五周学习总结

教材学习内容总结

使用try 、catch

使用try、catch: Java中所有错误都会被包装成对象,可以尝试(try)执行程序并捕捉(catch)代表错误的对象后做一些处理。使用了try、catch语法,JVM会尝试执行try区块中的程序代码,如果发生错误,执行程序会跳离错误发生点,然后比对catch括号中声明的类型,是否符合被抛出的错误对象类型,如果是就执行catch中的程序代码。

 

public class Average {    

public static  void main(String[] args){

 

            Scanner scanner = new Scanner(System.in);

            double sum = 0;

            int count = 0;

            int number;

            while(true){  

               number = scanner.nextInt();

                if(number==0){

 

                    break;

                }

                sum+=number;

                count++;

            }

            System.out.printf("平均%.2f%n", sum/count);

        }

}

 

在进行错误的输入后,系统会进行正确的处理

异常继承架构

错误会被包装为对象继承自java.lang.Throwable,他有两个子类java.lang.Error与java.lang.Exception。

单就语法与继承架构上来说,如果某个方法声明会抛出Throwable或子类实例,只要不是属于Error或java.lang.RuntimeException或其子类实例,就必须明确使用try、catch语法加以处理,或者在方法中用throws声明这个方法会抛出异常,否则会编译失败,throws的使用也提高了代码的安全性。

若某个方法声明会抛出Thorwable或子类实例,只要不是属于Error或java.lang.RuntimeException,就必须明确使用try、catch语法加一处理,或者在方法中使用throws声明这个方法会抛出异常,否则编译失败

若想得知异常发生的根源,以及多重方法调用下异常的堆栈传播,可以利用异常对象自动收集的堆栈追踪来取得相关信息,例如调用异常对象的printStackTrace()、getStackTrace()等方法。要善于堆栈追踪,前提是程序代码中不可有私吞异常的行为、对异常做了不适当的处理,或显示了不正确信息。在使用throw重抛异常时,异常的追踪堆栈起点,仍是异常的发生根源,而不是重抛异常的地方。如果想要让异常堆栈起点为重抛异常的地方,可以使用fillInStackTrace(),这个方法会重新装填异常堆栈,将起点设为重抛异常的地方,并返回Throwable对象。

要抓还是要抛

编译时被检测异常 :该异常在编译时,如果没有处理(没有抛也没有try),编译失败。该异常被表示,代表可以被处理。 •运行时异常(编译时不检测):在编译时,不需要处理,编译器不检查。该异常的发生,建议不处理,让程序停止,需要对代码进行修正。

 

import java.io.*;
import java.util.Scanner;
public class FileUtil{
    public static String readFile(String name)throws FileNotFoundException{
        StringBuilder text=new StringBuilder();
        try{
            Scanner console=new Scanner(new FileInputStream(name));
            while(console.hasNext()){
                text.append(console.nextLine())
                .append('\n');
            }
        }catch(FileNotFoundException ex){
            ex.printStackTrace();
            throw ex;
        }
        return text.toString();
    }
}

 

认识堆栈追踪

在多重方法调用下,异常发生点可能是在某个方法之中,若想得知异常发生的根源,以及多重方法调用下异常的堆栈传播,可以使用堆栈追踪来取得相关信息。使用方法是直接调用异常对象的printStackTrace()。堆栈追踪信息中显示了异常类型,最顶层是异常的根源,以下是调用方法的顺序,程序代码行数是对应于当初的程序原始码,如果想要取得个别的堆栈追踪元素进行处理,则可以使用getStackTrace(),在捕捉异常后什么都不做的话或者做了不适当的处理,这种程序代码会对应用程序维护造成严重伤害。在使用throws重抛异常时,异常的追踪堆栈起点,仍是异常的发生根源,而不是重抛异常的地方。如果想要让异常堆栈起点为重抛异常的地方,可以使用fillInStackTrace()方法,这个方法会重新装填异常堆栈,将起点设为重抛异常的地方,并返回Throwable对象。

认识Collection架构

JavaSE中提供了满足各种需求的API,收集对象的行为,都定义在java.collection中,既能收集对象也能驱逐对象。收集对象的行为,像是新增对象的add()方法、移除对象的remove()方法等,都是定义在java.util.Collection中。既然可以收集对象,也要能逐一取得对象,这就是java.lang.Iterable定义的行为,它定义了iterable()方法返回java.util.Iterator操作对象,可以让你逐一取得收集的对象。Collection接口中有三个子接口,分别是List、Set和Queue。如果希望收集时记录记录每个对象的索引顺序,并可依索引取回对象,可以使用java.util.List接口,如果希望收集的对象不重复,具有集合的行为,可以使用java.util.Set接口,如果希望收集对象时以队列方式,收集的对象假如至尾端,取得对象时从前端,则可以使用java.util.Queue接口,如果希望对Queue的两端进行加入、移除等操作,则可以使用java.util.Deque。

具有索引的List

List是一种Collection,作用是收集对象,并以索引方式保留收集的对象顺序,其操作之一是java.util.ArrayList。 ArrayList特性:数组在内存中会是连续的线性空间,根据索引随机存取时速度快。有可指定容量的构造函数。 LinkedList特性:若收集的对象经常会有变动索引的情况。

教材学习中的问题和解决过程

本周学习的是第8,9章的知识点,学习了如何对代码进行异常的处理,平时编代码都会有一些小问题,通过同学和书本的讲解都可以得到讲解,通过学习本章的知识,我对处理错误异常的代码的能力又提高了许多,今后在遇见错误的带码时我也可以进行即使正确的处理。

下图是我的代码托管:

java第五周学习总结

 

学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时  
第一周 150/150 1/1 15/15  
第二周 150/400 1/2 15/30  
第三周 150/550 1/3 20/50  
第四周 150/700 1/4 16/56  
第五周 150/850 1/5 19/65

参考资料