20172320 2017-2018-2 《Java程序设计》第九周学习总结

20172320 2017-2018-2 《Java程序设计》第九周学习总结

教材学习内容总结

1、异常代表一种意外情况,在正常情况下不会发生
2、三种方法处理异常:

  • 根本不处理异常
  • 当异常发生时处理异常
  • 在程序的某个位置集中处理异常
    3、未捕获异常:如果程序不处理异常,则将非正常地结束程序,并阐述关于何处发生什么异常的信息——第一个踪迹行指出发生异常的方法、文件和代码行号,如果还有其他踪迹行,则指出调用发生异常方法的其他方法
    4、try-catch语句用于定义如何处理一种指定的异常,每个catch子句处理一种try语句中抛出的异常
    5、finally语句用于定义一段无论是否有异常发生豆浆执行的代码,常用于管理资源或保证一定执行某段代码,finally子句必须跟在所有的catch子句后面,没有catch时仍可使用
    6、如果在一个异常的发生处没有捕获和处理该异常,则该异常将传递给上级调用方法
    7、标准I/O流:
  • System.in (标准输入流)
  • System.out(标准输出流)
  • System.err(标准错误流)
    8、递归是一种编程技术,允许一个方法调用自己以达到最终目的(自身定义自身的过程)
    9、若只有递归定义的那一部分,则递归将永无终止,任何一个递归定义中必须有称为基本情况的非递归定义部分,才能使递归最终结束
    10、- 直接递归:方法调用自己的递归
    - 间接递归:如果一个方法调用其他方法,最终导致再次调用自己
    直接递归和间接递归都需要重视基本情况
    11、递归的应用:迷宫旅行和汉诺塔问题

教材中遇到的问题和解决过程‘

  • 问题1:为什么要自定义异常?
  • 问题1解决方案:通过上网搜索,知道了自定义异常的好处:
    - 我们在工作的时候,项目是分模块或者分功能开发的 ,基本不会你一个人开发一整个项目,使用自定义异常类就统一了对外异常展示的方式
    - 有时候我们遇到某些校验或者问题时,需要直接结束掉当前的请求,这时便可以通过抛出自定义异常来结束
    - 自定义异常可以在我们项目中某些特殊的业务逻辑时抛出异常,系统中有些错误是符合Java语法的,但不符合我们项目的业务逻辑,如"中性".equals(sex)性别等于中性时我们要抛出异 常 , 而Java是不会有这种异常的
    - 使用自定义异常继承相关的异常来抛出处理后的异常信息可以隐藏底层的异常,这样更安全,异常信息也更加的直观

  • 问题2:字符流和字节流的区别?
  • 问题2解决方案: 在Java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。
    - 字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组
    - 字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串
    - 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以

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

  • 问题1:Pascal三角形能计算出每行结果但不能呈现出三角形形式
  • 问题1解决方案:能计算出结果至少说明思路是没什么问题,找不到问题,在大佬的帮助下删掉了一个没什么用的循环,在一些位置上运用“ ”\n使所得结果勉强看起来像个三角形

    代码托管


    上周考试错题总结

  • A finally clause will execute
    A .only if the try statement that precedes it does not throw an exception
    B .only if the try statement that precedes it throws an exception that is caught
    C .only if the try statement that precedes it throws an exception that is not caught
    D .only if the try statement that precedes it throws an exception, whether it is caught or not
    E .in any circumstance
    分析:无论try语句块正常退出或者由于抛出异常而退出,都将执行finally子句
  • Which of the following is not true of the RuntimeExceptions class?
    A .All RuntimeExceptions throw checked exceptions
    B .All RuntimeExceptions are Throwable objects
    C .RuntimeException has child classes ArithmeticException and NullPointerException
    D .RuntimeException objects are not Error objects
    E .All of the above are true
    分析:B、C和D中的答案都是正确的,运行时异常是可抛出的对象,并不是错误类的一部分,而两种类型的runtimeexception是算术异常和NullPointerException。不属于运行时异常的异常包括各种检查异常,但运行时异常不被检查异常。
  • System.err is a(n)
    A .input stream
    B .GUI dialog box that indicates when an error has arisen
    C .object
    D .Error subclass
    E .RuntimeException subclass
    分析:在Java中有三个默认的流都是系统的对象
  • The difference between the throw reserved word and the throws reserved word is that throw is used within a method body, while throws is used within a method header.
    A .true
    B .false
    分析:Throw是在方法中使用的命令式命令,用于创建和抛出一个新的异常。抛出是一个编译器指令,它告诉编译器当前的方法可能会抛出一个未在方法中捕获的抛出,从而可以逃到外部级别。

    结对及互评

点评过的同学博客和代码

  • 本周结对学习情况
    20172327
    20172317
  • 结对学习内容
    ◦教材第11,12章
    ◦阅读11.1-11.6、12.1-12.3章节
    ◦完成课后自测题,并参考答案学习
    ◦完成课后练习题
    ◦完成程序设计项目:至少完成PP11.1、PP11.2、PP12.1、PP12.9

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 67/67 1/4 20/20
第二周 328/395 1/5 20/40
第三周 523/851 1/6 20/60
第四周 1070/1921 1/7 20/80
第五周 608/2529 1/8 10/90
第六周 608/2899 1/9 20/110
第七周 429/3328 1/10 20/130
第八周 804/4131 1/11 20/150
第九周 521/4652 1/12 20/170

参考资料

猜你喜欢

转载自www.cnblogs.com/garolwz/p/9030326.html