1. 本周学习总结

2. 书面作业

本次PTA作业题集异常

1.常用异常

题目5-1

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

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

经常出现数组越界导致的异常,无需使用try-catch进行捕获处理,编写时注意数组大小

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

CheckedException的异常要求用户一定要用try-catch来捕获异常

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

题目5-2

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

2.2 实验总结

try-catch可以用来捕获异常并及时发现错误

3.throw与throws

题目5-3

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

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

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

需要传递给调用者错误发生的原因

4.函数题

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

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

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

1.子类异常必须放在父类异常前面否则会只执行父类异常的捕获而不执行子类异常的捕获导致编译错误;2.如果指示不同类型的问题的多种异常都是受检异常,那么它们必须都列在方法的throws子句中之间以逗号分开

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. byte[] content = null;
  2. FileInputStream fis=null;
  3. try{
  4. fis = new FileInputStream("testfis.txt");
  5. int bytesAvailabe = fis.available();//获得该文件可用的字节数
  6. if(bytesAvailabe>0){
  7. content = new byte[bytesAvailabe];//创建可容纳文件大小的数组
  8. fis.read(content);//将文件内容读入数组
  9. }catch(Exception e){
  10. System.out.println(e);
  11. }finally{
  12. if(fis!=null){
  13. try{
  14. fis.close();
  15. }catch(NullPointerException e){//判断是否是空指针异常
  16. System.out.println(e);
  17. }
  18. }
  19. }
  20. System.out.println(Arrays.toString(content));//打印数组内容

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. 码云上代码提交记录

题目集:异常

3.1. 码云代码提交记录

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

  1. 201521123027 <java程序设计>第九周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2.书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什 ...

  2. 20145220java程序设计第九周学习总结

    20145220java程序设计第九周学习总结 教材学习内容总结 JBDC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商对接口直接操作,开发人员无须接触底层数据可驱动程序的差异 ...

  3. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  4. 201521044152<java程序设计>第一周学习总结

    本周学习总结 java开发时间虽然很短,但是发展迅速,已成为现在非常流行的一门语言,很开心能有幸学习java.第一周学习了java的平台,运行环境jdk以及jrt等等新名词,还了解了eclipse的基 ...

  5. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  6. 20145304 刘钦令 Java程序设计第一周学习总结

    20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...

  7. 201621123007 Java程序设计第一周 学习总结

    第一周-Java基本概念 201621123007 <Java程序设计> 第一周学习总结 1. 本周学习总结 java是面向对象的一类语言,三大特征:封装性,继承性,多态性. jdk jr ...

  8. 马凯军201771010116《面向对象与程序设计Java》第九周学习总结

    一.理论知识部分 异常.日志.断言和调试 1.异常:在程序的执行过程中所发生的异常事件,它中断指令的正常执行. 2.Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. 3 ...

  9. 201521123063 JAVA程序设计 第二周学习总结

    1.本周学习重点(2.27-3.5) java中的数组 以二维数组为例,数组名为scores,则 (1)先声明数组 int[][] scores;或int scores[][];或int[] scor ...

  10. 《Java》第九周学习总结

    下载mysql 选择mysql的管理软件 idea可以直接连接 然后用库运行程序,但是没有截图,,因为想在navicat上试试,可惜速度太慢了 打开idea又很慢,所以明天再更新

随机推荐

  1. React&Webpack 环境安装

    react的安装依赖nodejs,nodejs安装下载可从http://nodejs.org/en/下载 1.   环境安装 1.1      创建lib目录 cd E:\ReactLib 1.2   ...

  2. MVC5+EF6 完整教程17--升级到EFCore2.0

    EF Core 2.0上周已经发布了,我们也升级到core 文章内容基于vs2017,请大家先安装好vs2017(15.3). 本篇文章主要讲下差异点,跟之前一样的就不再重复了. 文章目录(差异点): ...

  3. Eclipse快速补全行末分号

    Eclipse快速补全行末分号 Eclipse快捷键跳到行末补全分号 Eclipse快速结束当前语句(在行末加上分号,就是当前语句结束) Intellij IDEA 里是有快速补全分号的功能(快捷键: ...

  4. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——解码篇:(一)用ffmpeg解码视频

    一.概述 myRTSPClient(RTSPClient)获取音视频数据之后,接下来的工作便是将音视频数据交给解码器去解码(ffmpeg),ffmpeg解码之后于是便有了呈现在终端用户(USER)面前 ...

  5. 安装mvn,jdk,rocketmq

    附一个rocketmq各语言客户端仓库:https://github.com/apache/incubator-rocketmq-externals,我用go客户端,但是master分支的go没有pr ...

  6. 关于curl / curl_multi的一些实验

    几天没写了,主要都是自己的学习过程,贴一下curl / curl_multi_exec的一些代码,mark一下. <?php /** * Created by PhpStorm. * User: ...

  7. Notepad++使用图解

    Notepad++使用图解.. Notepad++的安装部分 -------------- -------------- --------------- -------------- -------- ...

  8. MyEclipse2014安装图解

    MyEclipse2014安装图解.. ------------------ ------------------ ------------------ ------------------ ---- ...

  9. Markdown简单教程

    前言:大家好 我是阿飞~ 今天给大家推荐一个不错的东西 MarkDown 今后的潮流就是用它来写readme文件 具体好处多多 就把它理解为可以快速设置样式的txt文档吧~ 标题 # 每一级标题通过# ...

  10. 高CPU业务场景下的任务分发方案Gearman搭建一览

      Gearman是当年LiveJournal用来做图片resize的,大家也明白图片resize是一个高CPU的操作,如果让web网站去做这个高CPU的功能,有可能会拖垮你的 web应用,那本篇我们 ...