• 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历史-设置时间段”, 然后搜索并截图

  • 相关阅读:
    荔枝微课基础架构的演进与实践
    如何制作出让女朋友满意的大片
    SSL 证书变革之时已至,这些变化你都清楚吗?
    浅谈 FTP、FTPS 与 SFTP
    HTTP/3 来了,你了解它么?
    看视频常见的 720p、1080p、4k,这些分辨率到底包含了什么
    element-ui表单验证遇到v-if时不生效
    声纹识别算法阅读之CN-Celeb
    apply-cmvn&apply-cmvn-online&apply-cmvn-slide
    语音识别算法阅读之TDNN-F
  • 原文地址:https://www.cnblogs.com/xqy123/p/6746677.html
Copyright © 2020-2023  润新知