zoukankan      html  css  js  c++  java
  • 201521123114《Java程序设计》第9周学习总结

    1. 本章学习总结

    2. 书面作业

    Q1. 常用异常
    题目5-1
    1.1 截图你的提交结果(出现学号)

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

    经常出现的异常有ArrayIndexOutOfBoundsException、 NullPointerException、ClassCastException,
    不需要捕获,因为它们都继承自RuntimeException异常类;
    第一个可通过对数组定义长度来避免,第二个可通过对变量设置初始值来避免,第三个是实际对象和引用不是同一个类型,自己要注意。
    

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

    除了Error与RuntimeException及其子类以外的异常都是Checked Exception,一定要使用捕获处理。
    

    Q2. 处理异常使你的程序更加健壮
    题目5-2
    2.1 截图你的提交结果(出现学号)

    2.2 实验总结

    首先实例化一个数组,然后循环输入数据,用try-catch来实现当输入的是非整型字符串提示异常。在捕获到异常之后的重新输入,
    一定要记得将非整型字符串从数组中去掉,否则它将占用数组的一个位置,导致最后一个整型字符串无法进入数组。
    

    Q3. throw与throws
    题目5-3
    3.1 截图你的提交结果(出现学号)

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

    需要让调用者知道编译器对这段代码抛出什么异常及其原因。该源代码在输入为null、radix < Character.MIN_RADIX、radix > Character.MAX_RADIX
    等情况的时候将抛出NumberFormatException异常,并提示抛出这个异常的原因。在3.1中输入 0 6时,应该及时抛出ArrayIndexOutOfBoundsException
    说明数组越界,让读者明白输入的范围。
    

    Q4.函数题
    题目4-1(多种异常的捕获)
    4.1 截图你的提交结果(出现学号)

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

    捕获时需要注意这多种异常之间的继承关系,子类必须在父类之前先被捕获,否则会发生错误;在相同继承层次的可以不考虑排列顺序。
    

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

    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 (IOException e) {
            e.printStackTrace();
    }finally{
            if(fis != null){
                try{
                    fis.close();
                }catch(IOException e){
                     e.printStackTrace();    
                }
    }
    

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

     byte[] content = null;
     try (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));//打印数组内容 
    } catch (IOException e) {
          e.printStackTrace();
    }
    }
    

    3. PTA实验总结及码云上代码提交记录

    3.1本周Commit历史截图

  • 相关阅读:
    shell中的 echo命令
    shell中的运算符
    shell中的替换
    shell中的元字符
    springcloud-sleuth的使用
    springcloud-sleuth之zipkun运行和概念介绍
    springcloud-sleuth是什么
    消息总线(bus)和消息驱动(stream)的区别
    springcloud-stream之持久化
    springcloud-stream之消费者重复消费
  • 原文地址:https://www.cnblogs.com/s114/p/6747919.html
Copyright © 2011-2022 走看看