• 201521123051《Java程序设计》第九周学习总结


    1. 本周学习总结

    1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容。

    ·所有的异常类是从 java.lang.Exception 类继承的子类。
    ·Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。
    ·Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。
    ·Error 用来指示运行时环境发生的错误。例如,JVM 内存溢出。一般地,程序不会从错误中恢复。
    · Exception 这种异常分两大类运行时异常和非运行时异常(编译异常)。程序中应当尽可能去处理这些异常。
    ·通常,Java的异常(包括Exception和Error)分为可查的异常(checked exceptions)和不可查的异常(unchecked exceptions)。 除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。
    

    2. 书面作业

    本次PTA作业题集异常

    1.常用异常

    题目5-1

    1.1 截图你的提交结果(出现学号)

    1.2 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?

    常见异常:java.lang.IndexOutOfBoundsException(数组下标越界异常)、Java.lang.NullPointerException(空指针异常) 、java.lang.ClassNotFoundException(指定的类不存在)、 java.lang.NumberFormatException(字符串转换为数字异常)、java.lang.ClassCastException(数据类型转换异常)、java.lang.FileNotFoundException(文件未找到异常)等等.
    
    不需要捕获异常,因为大部分都是RuntimeException及其子类的不可查的异常(unchecked exceptions)。
    
    只能通过自己养成良好的编程习惯,在细节上反复斟酌代码,避免类似异常.
    

    1.3 什么样的异常要求用户一定要使用捕获处理?

    除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。
    

    2.处理异常使你的程序更加健壮

    题目5-2

    2.1 截图你的提交结果(出现学号)

    2.2 实验总结

    小细节:Integer.parseInt(String)就是将String字符类型数据转换为Integer整型数据,Integer.parseInt(String)遇到一些不能被转换为整型的字符时,会抛出异常.
    

    3.throw与throws

    题目5-3

    3.1 截图你的提交结果(出现学号)

    3.2 阅读Integer.parsetInt源代码,结合3.1说说抛出异常时需要传递给调用者一些什么信息?

    Integer.parsetInt源代码

    如图举例抛出了一个NumberFormatException异常时,可知抛出异常时需要传递给调用者关于异常的类型,原因.
    

    4.函数题

    题目4-1(多种异常的捕获)

    4.1 截图你的提交结果(出现学号)

    4.2 一个try块中如果可能抛出多种异常,捕获时需要注意些什么?

    一个try块后有两个catch块,这很正常,因为,在try块中包含众多语句,可能抛出多种不同的异常,只有通过多个catch块来捕获不同的异常。
    
    而如果多个异常之间存在继承关系,应该把子类异常放在你类异常的前面来捕获。异常是就近捕捉,抛出子类异常可以捕捉到父类也可以捕捉到子类,如果父类放前面就不会捕捉到子类了,系统会报错(异常屏蔽)。
    

    5.为如下代码加上异常处理

    byte[] content = null;
    FileInputStream fis = new FileInputStream("testfis.txt");
    int bytesAvailabe = fis.available();//获得该文件可用的字节数
    if(bytesAvailabe>0){
        content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
        fis.read(content);//将文件内容读入数组
    }
    System.out.println(Arrays.toString(content));//打印数组内容
    

    5.1 改正代码,让其可正常运行。注1:里面有多个方法均可能抛出异常。注2:要使用finally关闭资源。

      byte[] content = null;
        FileInputStream fis=null;
        try {
            fis=new FileInputStream("testfis.txt");
            int bytesAvailabe = fis.available();//获得该文件可用的字节数
            if (bytesAvailabe > 0) {
                content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
                fis.read(content);//将文件内容读入数组
                }
                System.out.println(Arrays.toString(content));//打印数组内容
        }
        catch(FileNotFoundException ex)
        {
            System.out.println(ex);
        }
        catch(IOException ex)
        {
            System.out.println(ex);
        }
        finally {
            System.out.println("close resource");
            try
            {
                fis.close();
            } catch(IOException ex){
                
            }
        }
    

    5.2 使用Java7中的try-with-resources来改写上述代码实现自动关闭资源.

       try(FileInputStream fis=new FileInputStream("testfis.txt"))
        {
            byte[] content = null;
            try {
                int bytesAvailabe = fis.available();//获得该文件可用的字节数
                if (bytesAvailabe > 0) {
                    content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
                    fis.read(content);//将文件内容读入数组
                    }
                    System.out.println(Arrays.toString(content));//打印数组
            }
            catch(FileNotFoundException ex)
            {
                System.out.println(ex);
            }
            catch(IOException ex)
            {
                System.out.println(ex);
            }
        }catch(IOException ex){
            ex.printStackTrace();
        }
    

    3. 码云上代码提交记录

    题目集:异常

    3.1. 码云代码提交记录

    在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

  • 相关阅读:
    java获取指定文件夹下的所有文件名
    org.dom4j.DocumentException: unknown protocol: d Nested exception: unknown
    如何在spring中获取request对象
    Java获取文件后缀名
    解析XML并将信息封装到对象中
    在web项目启动时执行某个方法
    Maven Dependencies没有了的解决办法
    B-树(B+树) 学习总结
    Netty学习笔记之一(Netty解析简单的Http Post Json 请求)
    用到的设计模式总结--单例模式+工厂方法模式+Builder模式
  • 原文地址:https://www.cnblogs.com/xqy123/p/6746677.html
Copyright © 2020-2023  润新知