201521123045 《Java程序设计》第9周学习总结

1. 本章学习总结

2. 书面作业

本次PTA作业题集异常

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

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

答:通常避免数组访问越界时,一般是检查其下标看看是否越界。避免访问空指针时,用if语句判断str对象是否为空。

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

答:可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明也就是说,非RuntimeException异常类或者其子类的的异常都要声明捕, 只有RuntimeException 或者是其子类的异常是不需要进行声明捕捉的。

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

2.2 实验总结

答:当输入数组中的值不是整型时,需要捕获异常,而且需要将其删除,而且删除后数组的下标要记得。

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

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

  1. Integer.parsetInt源代码:
  2. public static int parseInt(String s) throws NumberFormatException {
  3. return parseInt(s,10);
  4. }
  5.  
  6. public static int parseInt(String s, int radix)
  7. throws NumberFormatException
  8. {
  9. /*
  10. * WARNING: This method may be invoked early during VM initialization
  11. * before IntegerCache is initialized. Care must be taken to not use
  12. * the valueOf method.
  13. */
  14.  
  15. if (s == null) {
  16. throw new NumberFormatException("null");
  17. }
  18.  
  19. if (radix < Character.MIN_RADIX) {
  20. throw new NumberFormatException("radix " + radix +
  21. " less than Character.MIN_RADIX");
  22. }
  23.  
  24. if (radix > Character.MAX_RADIX) {
  25. throw new NumberFormatException("radix " + radix +
  26. " greater than Character.MAX_RADIX");
  27. }
  28.  
  29. int result = 0;
  30. boolean negative = false;
  31. int i = 0, len = s.length();
  32. int limit = -Integer.MAX_VALUE;
  33. int multmin;
  34. int digit;
  35.  
  36. if (len > 0) {
  37. char firstChar = s.charAt(0);
  38. if (firstChar < '0') { // Possible leading "+" or "-"
  39. if (firstChar == '-') {
  40. negative = true;
  41. limit = Integer.MIN_VALUE;
  42. } else if (firstChar != '+')
  43. throw NumberFormatException.forInputString(s);
  44.  
  45. if (len == 1) // Cannot have lone "+" or "-"
  46. throw NumberFormatException.forInputString(s);
  47. i++;
  48. }
  49. multmin = limit / radix;
  50. while (i < len) {
  51. // Accumulating negatively avoids surprises near MAX_VALUE
  52. digit = Character.digit(s.charAt(i++),radix);
  53. if (digit < 0) {
  54. throw NumberFormatException.forInputString(s);
  55. }
  56. if (result < multmin) {
  57. throw NumberFormatException.forInputString(s);
  58. }
  59. result *= radix;
  60. if (result < limit + digit) {
  61. throw NumberFormatException.forInputString(s);
  62. }
  63. result -= digit;
  64. }
  65. } else {
  66. throw NumberFormatException.forInputString(s);
  67. }
  68. return negative ? result : -result;
  69. }

答:需要告诉到底是输入的数据类型错误或是其他的原因,要具体告诉操作者。

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

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

答:一旦程序遇到异常就不会继续往下运行了,所以只能抛出一个异常。

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

  1. byte[] content = null;
  2. FileInputStream fis = new FileInputStream("testfis.txt");
  3. int bytesAvailabe = fis.available();//获得该文件可用的字节数
  4. if(bytesAvailabe>0){
  5. content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
  6. fis.read(content);//将文件内容读入数组
  7. }
  8. System.out.println(Arrays.toString(content));//打印数组内容

5.1 改正代码,让其可正常运行。注1:里面有多个方法均可能抛出异常。注2:要使用finally关闭资源。

  1. public static void main(String[] args) throws IOException {
  2. byte[] content = null;
  3. FileInputStream fis=null;
  4. try{
  5. fis= new FileInputStream("testfis.txt");
  6. int bytesAvailabe = fis.available();//获得该文件可用的字节数
  7. if(bytesAvailabe>0){
  8. content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
  9. fis.read(content);//将文件内容读入数组
  10. }
  11. }
  12. catch(FileNotFoundException e){System.out.println(e);}
  13. catch(IOException e){System.out.println(e);}
  14. finally
  15. {
  16. if(fis!=null)
  17. try{
  18. fis.close();
  19. }
  20. catch(Exception e){System.out.println(e);}
  21. }
  22. System.out.println(Arrays.toString(content));//打印数组内容
  23. }

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

  1. public static void main(String[] args) throws IOException {
  2. byte[] content = null;
  3. try (FileInputStream fis = new FileInputStream("testfis.txt");){
  4. int bytesAvailabe = fis.available();//获得该文件可用的字节数
  5. if(bytesAvailabe>0){
  6. content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
  7. fis.read(content);//将文件内容读入数组
  8. }
  9. System.out.println(Arrays.toString(content));//打印数组内容
  10. } catch (IOException e) {
  11. e.printStackTrace();
  12. }

3. 码云上代码提交记录

201521123045 《Java程序设计》第9周学习总结的更多相关文章

  1. 201521123045 <java程序设计>第11周学习总结

    201521123045 <java程序设计>第11周学习总结 1. 本周学习总结 2. 书面作业 2. 书面作业 Q1.1.互斥访问与同步访问完成题集4-4(互斥访问)与4-5(同步访问 ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. Oracle基础--命令

    ====================== 基础命令====================== 1.su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界 ...

  2. oracle 表空间 表权限 用户

    启动数据库命令分为三个阶段: 1.查看所有用户:select * from dba_user;select * from all_users;select * from user_users;2.查看 ...

  3. python基础笔记(一)

    python解释器执行python程序的过程:python3 C:\test.py 1.启动python解释器(内存中) 2.将C:\test.py 内容从硬盘读入内存(这一步与文本编辑器是一样的) ...

  4. Java 实现 Domino邮箱自动注册

    一.前提条件 Domino服务器需开通DIIOP服务 二.需要导入Java包 import lotus.domino.*; 三.实现Java代码 public void cerateID(MailPe ...

  5. HttpServlet源码分析

    1.HttpServlet的用法 提供了创建Http Servlet的抽象类,通过实现此类定义自己的Servlet 2.HttpServlet是否是线程安全 先说结论:HttpServlet不是线程安 ...

  6. install ubuntu16.04

    1.添加分区 添加驱动目录/boot,ext4文件系统 ,给200m够了,图中2G多了,勾选格式化 添加      根目录/ 25G ,ext4文件系统,勾选格式化 添加 家目录 /home ,30G ...

  7. Java的static关键字

    本文参考:Java的static关键字 通过static关键字可以满足两方面的需要.一种情形是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象.另一种情形是,希 ...

  8. thinkjs学习-this.assign传递数据和ajax调用后台接口

    在页面加载时,就需要显示在页面上的数据,可以在后台使用this.assign赋值,在前台通过ejs等模板获取:用户点击按钮,或者触发某些事件和后台进行交互时,就需要用到ajax调用后台接口.本文通过一 ...

  9. INotifyPropertyChanged(监听数据),当数据改变时调用

    public class BaseViewModel : INotifyPropertyChanged    {        public event PropertyChangedEventHan ...

  10. MongoDB导入导出以及数据库备份

    -------------------MongoDB数据导入与导出------------------- 1.导出工具:mongoexport     1.概念:         mongoDB中的m ...