1. 本周学习总结

2. 书面作业

1.常用异常

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

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

  • 以前的代码经常出现空指针的,需要捕获。能在代码编译的时候提示错误点,而且代码也会继续往下执行,不会因为这一个问题而影响到后面的内容。

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

  • 用户在程序运行时触发所导致的错误,需要异常机制来捕捉和处理。
  • 当前函数无法将某种状态传递到外面的时候也要用异常处理

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

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

2.2 实验总结

  • 这一题的关键在于如何捕获异常之后,不会影响到正常的代码程序运行,继续之前未完成的赋值。
  • 所以这里我把异常判断放在了for循环赋值的内部。如果当前赋值操作出现异常,捕获后进行处理。
  • 这时的catch处理异常,然后继续执行接下来的代码,也就是for循环。那么本该在这里被赋值的数,就为0
  • 所以为了能够返回当前错误赋值的位置,重新赋值,i--



3.throw与throws

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

  • 未达成预计结果,提交未通过

public class Main3 {
public static void main(String[] arge) throws IllegalArgumentException{
Scanner in= new Scanner(System.in);
int n=in.nextInt();
int[] arr=new int[n];
double[] brr=new double[n];
for(int i=0;i<n;i++){
arr[i]=in.nextInt();
}
int begin=in.nextInt();
int end=in.nextInt();
for(int i=0;i<n;i++)
brr[i]=(double)arr[i];
try{
System.out.println(ArrayUtils.findMax(brr, begin, end));
}catch(IllegalArgumentException e){
System.out.println(e);
}
} } class ArrayUtils{
public static double findMax(double[] arr,int begin,int end) throws IllegalArgumentException{
try{
if(begin>=end)
throw new IllegalArgumentException("begin:"+begin+">=:"+end);
else if(begin<0)
throw new IllegalArgumentException("begin:"+begin+"<0");
else if(end>arr.length)
throw new IllegalArgumentException("end:"+end+">arr.length");
/*else{
for(;arr[begin]<arr[begin=1]&&begin<end;begin++)
arr[begin]=arr[begin+1];
} */
}catch(Exception e){ }
return arr[begin];
}
}

4.函数题

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

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

  • 捕获时,要注意catch后面括号内的,如果是(Exception e)说明接受多种异常状态。
Unreachable catch block for Exception. It is already handled by the catch block for Exception
  • 异常的catch catch块。它已经被捕获提单处理

  • 所以,最好是为不同的异常状态做不同的处理,方便区分和捕获

  • 另外,一旦某个catch捕获到匹配的异常类型,将进入异常处理代码。一经处理结束,就意味着整个try-catch语句结束。其他的catch子句不再有匹配和捕获异常类型的机会。

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 改正代码,让其可正常运行。注意:里面有多个方法均可能抛出异常

try{
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));//打印数组内容
}
catch(FileNotFoundException e){
System.out.println("文件未找到");
}
catch(IOException e){
System.out.println("文件输入有误");
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("数组越界");
}

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

6.重点考核:使用异常改进你的购物车系统举至少两个例子说明你是如何使用异常机制让你的程序变得更健壮。说明要包含2个部分:1. 问题说明(哪里会碰到异常)。2.解决方案(关键代码)

package shopping;

import java.util.ArrayList;

class ShoppingCartException extends Exception
{ public ShoppingCartException(String s)
{
super(s);
} } public class ShoppingCart{ private static int totalnum=0;
private static double totalprice=0;
private int cnum;
private String name;
private double price;
private String category;
private int num; public ArrayList<Goods> cart=new ArrayList<Goods>();
public ArrayList<ShoppingCart> cartlist=new ArrayList<ShoppingCart>();
Goods good; public ShoppingCart(String category, String name, double price,int num,int cnum)throws ShoppingCartException {
setCategory(category);
setName(name);
setPrice(price);
setCnum(cnum);
setTotalprice(cnum);
setTotalnum(cnum);
good=new Goods(category,name,price ,num);
if(num<cnum) throw new ShoppingCartException("选择数量大于库存!");
cart.add(good);
} public static void setTotalprice(double totalprice) {
ShoppingCart.totalprice = totalprice;
} public String getCategory() {
return category;
} public void setCategory(String category) {
this.category = category;
} public int getCnum() {
return cnum;
} public void setCnum(int cnum) {
this.cnum = cnum;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public double getPrice() {
return price;
} public void setPrice(double price) {
this.price = price;
} public int getNum() {
return num;
} public void setNum(int num) {
this.num = num;
} public int getTotalnum() {
return totalnum;
} public void setTotalnum(int cnum) {
this.totalnum = cnum+this.totalnum;
} public double getTotalprice() {
return totalprice;
} public void setTotalprice(int cnum) {
this.totalprice = cnum*this.getPrice()+this.totalprice;
} @Override
public String toString() {
return getCategory()+" 名称:" + getName() + " \t价格:" + getPrice() +" \t数量:"+cnum;
}
public static String total()
{
return "\t总价:"+totalprice+"\t\t总数:"+totalnum; } }

3. 码云上代码提交记录

Java 第九周总结的更多相关文章

  1. 20165210 Java第九周学习总结

    20165210 Java第九周学习总结 教材学习内容 - 第十三章学习总结 URL类: URL的构造方法: try { URL url = new URL("http://www.goog ...

  2. 20145304 Java第九周学习报告

    20145304<Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是Java联机数据库的标准规范.定义了 ...

  3. JAVA 第九周学习总结

    20175308 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 准备工作 下载MYSQL数据库管理系统 前往MYSQL官网的下载页面,选择相应平台的MYSQ ...

  4. 20165326 java第九周学习笔记

    第九周学习笔记 URL类 属于java.net包 最基本三部分:协议(对象所在的Java虚拟机支持).地址(能连接的有效IP地址或域名).资源(主机上的任何一个文件) 常用构造方法 public UR ...

  5. 201521123093 java 第九周学习总结

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

  6. Java第九周学习总结

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

  7. java第九周笔记

  8. Java第九周总结

  9. JAVA实验报告及第九周总结

    Java第九周作业 实验报告七 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负 ...

随机推荐

  1. 【社交系统研发日记】如何在 Laravel 中 “规范” 的开发验证码发送功能

    顺便发个小通知:7月15日ThinkSNS+开源版发布,同时非开源的APP也走出内测阶段,体验二维码也全面发布体验. 什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统 ...

  2. 学习笔记TF041:分布式并行

    TensorFlow分布式并行基于gRPC通信框架,一个master负责创建Session,多个worker负责执行计算图任务. 先创建TensorFlow Cluster对象,包含一组task(每个 ...

  3. IOS开发之数据sqlite使用

    一.引入工具包 引入工具包libsqlite3.dylib,该工具包为C语言工具包. 二.代码操作数据库 1.创建并且链接数据库 - (void) _connectDB{ //1>获取沙盒路径作 ...

  4. sublime代码格式化插件HTML/CSS/JS prettify

    1. 进入下载链接,安装node.js (根据自己使用版本) https://nodejs.org/en/download/ 注意: 记住node.js的 安装路径 2.sublime HTML/CS ...

  5. logify与theos的二三事

    最近逆向一个软件,无奈类名.方法名混淆的太厉害,class-dump后,很难猜出大致是哪个方法在起作用.用reveal 和 cycript 找到了viewcontrol 类,但类方法太多,还是不能确定 ...

  6. JVM命令工具开发

    1.查看tomcat7_8080的gc状态 $ jps -v | awk '/tomcat7_8080/{print $1}' | xargs jstat -gcutil 2.查看tomcat7_80 ...

  7. Postman测试http接口

    一.安装 官网:https://www.getpostman.com/ Postman是一个Chrome的一个插件工具,我们可以通过Chrome的应用商店进行进行搜索并安装,安装完成会在桌面上显示一个 ...

  8. Python学习笔记开篇

    已经快30岁了,中专学历,不会什么技术,因为好吃懒做最喜欢的就是吃肉睡觉. 每次想学习技术如PhotoShop,绘声绘影,PHP,易语言,按键精灵都只是3分钟热血. 今天我想在业余时间学习Python ...

  9. .NET Core多平台开发体验[2]: Mac OS X

    除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的支持,我们先来体验 ...

  10. TTL转MIPI DSI芯片方案TC358778XBG

    型号:TC358778XBG功能:TTL转MIPI DSI通信方式:IIC分辨率:1920*1080电源:3.3/1.8/1.2封装形式:BGA80深圳长期现货 ,提供技术支持,样品申请及规格书请联系 ...