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. [C#] out vs ref

    当需要从一个方法中有多个返回值时可以考虑使用out和ref这两个关键字.下面通过代码的方式来说明两者的用法和不同之处. 例如现在有一个如下的Add方法,Add方法只有一个返回值. static int ...

  2. CSS选择器 - 性能的探究及提升

    [本博客为原创:http://www.cnblogs.com/HeavenBin/]  前言: 在工作中编写CSS样式表时随着选择器层数的增加总会看到选择器又丑又长的情况,利用工作之余研究从其命名再到 ...

  3. MD5 in JAVA

    using Apache Commons 需要引入org.apache.commons.codec.digest.DigestUtils这个包,pom.xml文件配置如下: <!-- https ...

  4. 【Ubuntu16.04】 install nginx

    1. Download PGP key in order to pass the authentication of the nginx repository signature. click to ...

  5. oracle中如何移动数据文件

    a.shutdown immediate关闭数据库  b.在os下拷贝数据文件到新的地点  c.Startup mount 启动到mount下  d.Alter database rename fil ...

  6. Google reCAPTCHA 人机身份验证

    1. 适合范围 注册及登录某些使用Google验证码的网站,如https://zaif.jp/,会要求进行人机身份验证 2. 方法介绍 下载老D的Google hosts以及一键更新批处理程序 老D博 ...

  7. spring boot / cloud (七) 使用@Retryable来进行重处理

    spring boot / cloud (七) 使用@Retryable来进行重处理 前言 什么时候需要重处理? 在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败,调用远程服务失败,争抢锁 ...

  8. poj2051 Argus

    Description A data stream is a real-time, continuous, ordered sequence of items. Some examples inclu ...

  9. python注释方法以及编码问题

    一.单行注释 在python中常使用"#"来进行单行注释,其快捷键为"ctrl+/",如果要对多行代码也就是代码块进行注释时,也可以选中多行按下 "c ...

  10. 基于moco的mock server 简单应用 来玩玩吧

    提起mock大家应该就知道是干嘛用的了,再次再介绍一种简单的方式,基于moco的mock server.步骤很简单: 1. 首先,要下载个moco的jar0_1482402640757_moco-ru ...