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

    1. 本周学习总结

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

    2. 书面作业

    本次PTA作业题集异常

    1. 常用异常

    题目5-1

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

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

    经常出现ArrayIndexOutOfBoundsException(数组越界),因为是Unchecked Exception,所以不需要捕获。要避免此问题,要在编写代码时多加注意。

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

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

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

    题目5-2

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

    2.2 实验总结

    主要是了解try-catch的运用,在输入出现异常时,用try-catch找出。

    3. throw与throws

    题目5-3

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

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

    如下代码所示:

    public static int parseInt(String s) throws NumberFormatException {
            return parseInt(s,10);
        }
    

    需要传递给调用者出现异常的原因,包括异常的类型和异常的具体原因。

    函数题

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

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

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

    需要注意子类的异常处理要放在父类的异常处理之前。

    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);//将文件内容读入数组
        }
        }catch(Exception e){
                System.out.println(e);
        }finally{
            if(fis!=null){
                try{
                    fis.close();
                }catch(NullPointerException e){
                     System.out.println(e);
                }
            }
        }
        System.out.println(Arrays.toString(content));//打印数组内容
    

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

    改写后:

    byte[] content = null;
        try(FileInputStream fis = new FileInputStream("testfis.txt")){//将尝试自动关闭资源的对象生成写在try之后的圆括号中
            int bytesAvailabe = fis.available();//获得该文件可用的字节数
            if(bytesAvailabe>0){
                content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
                fis.read(content);//将文件内容读入数组
            }
        }catch(Exception e){
            System.out.println(e);
        }
        System.out.println(Arrays.toString(content));//打印数组内容
    

    6. 重点考核:使用异常改进你的购物车系统(未提交,得分不超过6分)

    举至少两个例子说明你是如何使用异常处理机制让你的程序变得更健壮。
    说明要包含2个部分:1. 问题说明(哪里会碰到异常)。2.解决方案(关键代码)

    7. 选做:JavaFX入门

    如果未完成作业1、2的先完成1、2。贴图展示。如果已完成作业1、2的请完成作业3。内有代码,可在其上进行适当的改造。建议按照里面的教程,从头到尾自己搭建。

    8. 选做:课外练习

    JavaTutorial中Questions and Exercises
    练习总结

    3. 码云上代码提交记录

    题目集:异常

    3.1. 码云代码提交记录

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

    选做:4. 课外阅读

    任选下面一篇文章阅读,列举出几点自己能理解的异常处理最佳实践。
    Best Practices for Exception Handling
    Exception-Handling Antipatterns Blog
    The exceptions debate

  • 相关阅读:
    EntityFramework优缺点
    领导者与管理者的区别
    七个对我最好的职业建议(精简版)
    The best career advice I’ve received
    Difference between Stored Procedure and Function in SQL Server
    2015年上半年一次通过 信息系统项目管理师
    Difference between WCF and Web API and WCF REST and Web Service
    What’s the difference between data mining and data warehousing?
    What is the difference between a Clustered and Non Clustered Index?
    用new创建函数的过程发生了什么
  • 原文地址:https://www.cnblogs.com/yycl/p/6748691.html
Copyright © 2011-2022 走看看