20172321 2017-2018-2 《程序设计与数据结构》第九次学习总结

20172321 2017-2018-2 《程序设计与数据结构》第九次学习总结

教材学习内容总结

异常

  • 异常处理
    • 根本不处理异常
    • 当异常发生时处理异常
    • 在程序的某个位置集中处理异常
  • 未捕获的异常
    • 异常抛出时所输出的信息,提供了方法调用堆栈踪迹。
  • try-catch语句和finally语句
    • 没有异常,将继续执行try语句后的语句块,所有catch子句后的语句
    • 有异常,则控制立刻转移到相应的catch子句处理异常
    • 每个catch子句处理一种try语句块中抛出的异常
    • 无论try语句块正常退出或由于抛出异常而退出,都将执行finally子句
    • 如果有finally子句,则必须跟在所有的catch子句后面
  • 异常的传递
    • 如果一个异常的发生处没有捕获和处理该异常,则该异常将传递给上级调用方法
  • 异常类层次结构
    • 自定义异常:可由Exception类或它的后代类派生一个新类来定义一个异常
    • 可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来
    • Java中唯一的不可检测异常是RuntimeExceptions类的对象或该类的后代类对象
  • I/O异常
    • 一个数据存储可以作为一个程序的输入流或输出流,但一般不能同时是
标准I/O流 说明
System.in 标准输入流
System.out 标准输出流
System.err 标准错误流(输出错误信息)

递归

  • 递归
    • 递归是一种方法能够调用自己的编程技术
    • 任何一个递归定义中必须有称为基本情况的非递归定义部分
  • 递归编程
    • 每一次对方法的递归调用,都会创建新的局部变量和参数
    • 方法调用自己的递归为直接递归
    • 一个方法调用其它方法,导致再次调用自己为间接递归
  • 递归的应用
    • 迷宫旅行
    • 汉诺塔问题

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

  • 问题1:可检测异常和不可检测异常的区别
  • 问题1解决方案:可
    • 检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.可检查的异常必须在编译时被捕捉处理,命名为 Checked Exception 是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守.
    • 运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除...
  • 问题2:异常和错误的区别
  • 问题2解决方案:
    • Throwable类有两个子类,Error与 Exception。
      错误与异常都是在程序编译和运行时出现的错误。不同的是,异常可以被开发人员捕捉和处理;而错误一般是系统错误,一般不需要开发人员处理(也无法处理),比如内存溢出。
    • Exception是java中所有异常的基类。在java中异常被分为两大类,编译时异常和运行时异常。
    • Error是java中所有错误的基类。错误通常是我们无法处理的,绝大多数情况下,我们不应该试图捕获错误。

代码调试中的问题和解决过程

  • 问题1:pp11.2里不知道在哪里使用try-catch语句

  • 问题1解决方案:之后请教了同学,自己大概是知道了
  • 问题2:在pp12.1改写里,不知道该把判断是否为回文的语句放在哪里

  • 问题2解决方案:最后还是决定新声明一个方法来判断

代码托管

上周考试错题总结

  • 错题1及原因,理解情况
    Assume infile is a BufferedReader for a textfile and that the textfile is empty. What is returned from the message infile.readLine( ); ?
    A . 0
    B . null
    C . a special character known as the End-of-file marker (EOF)
    D . none of the above, the message causes a NullPointerException to be thrown
    E . none of the above, the message causes a EndOfFileException to be thrown
    正确答案: B 你的答案: E
    我本来是依稀记得书上哪里好像看到一眼null,但是之后找不到了最后选了E,还是看书不仔细。readLine()方法返回与文件中下一个文本项相等的字符串。如果文件为空,则返回为null。
  • 错题2及原因,理解情况
    PrintWriter is a better output stream class that PrintStream because PrintWriter
    A . has both print and println methods and PrintStream only has print
    B . can output both byte and character streams and PrintStream can only output byte streams
    C . has error checking mechanisms as part of the class and PrintStream does not
    D . will not throw checked exceptions and PrintStream will
    E . all of the above
    正确答案: C 你的答案: B
    这个我确实当时不知道,稍微想了一下,所以错了。打印器类是一个编写器类,而打印流类是一个流类。主要的区别是打印器是专为文件设计的,因此错误检查机制不是打印流的一部分。
  • 错题3及原因,理解情况
    The following defines a new Exception called AnewException.
    public Exception ANewException
    {
    public ANewException(String message)
    {
    super(message);
    }
    }
    A . true
    B . false
    正确答案: B 你的答案: A
    感觉是没毛病的,应该是对的呀,自己想不出原因,看解析:定义几乎是正确的,但它必须定义一个类,而不是一个例外。异常是一个类,异常应该扩展异常。类定义的标头应该是公共类的辅助扩展异常。

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

  • 参考示例

点评过的同学博客和代码

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 189/189 1/1 18/18
第二周 250/439 1/2 21/39
第三周 437/876 2/4 25/64
第四周 459/1335 2/6 21/85
第五周 547/1882 1/7 20/115
第六周 592/2474 2/9 25/150
第七周 782/3256 1/10 29/179
第八周 830/4086 3/13 40/219
第九周 1300/5386 2/15 40/259

参考资料

猜你喜欢

转载自www.cnblogs.com/N-idhogg/p/9033230.html