异常处理

当for循环遇上try-catch

首先是不建议在循环体内部进行try-catch操作,效率会非常低,这里仅仅是测试这种情况,具体的业务场景建议还是不要在循环里try-catch

@Test
public void forThrow(){
final int size = 6;
for (int i=0; i<size; i++){ if(i > 3){
throw new IllegalArgumentException(i+" is greater than 3");
} System.out.println(i);
}
}

上面执行了一个for循环,当i大于5就抛出异常,这里由于没有捕获异常,程序直接终止。
下面来看看捕获异常后的结果

@Test
public void forThrowException(){
final int size = 6;
for (int i=0; i<size; i++){
try {
if(i > 3){
throw new IllegalArgumentException(i+" is greater than 3");
}
}catch (IllegalArgumentException e){
e.printStackTrace();
}
System.out.println(i);
}
}





由于内部捕获了异常,程序打印出堆栈,程序没有终止,直到正常运行结束。

进行数据运算时,如果抛出了异常,数据的值会不会被改变呢?

@Test
public void forExceptionEditValue(){
final int size = 6;
int temp = 12345;
for (int i=0; i<size; i++){
try {
temp = i / 0;
}catch (ArithmeticException e){
e.printStackTrace();
}
System.out.println("i = "+i+", temp = "+temp);
}
}





可以看到,当想要改变temp的值的时候,由于数据运算抛出了异常,temp的值并没有改变!

Java中for循环中的的try-catch的更多相关文章

  1. java增强for循环中获取index

    java增强for循环中获取index http://rensanning.iteye.com/blog/2003205

  2. spring中for循环中事务

    1.需求:批量插入一批数据,不用spring jdbc的批处理,用for循环插入数据. 2.遇到的问题:在for循环中,当一个插入不成功,前面插入成功的数据也将回滚. 3.初始设计:在service中 ...

  3. JS中For循环中嵌套setTimeout()方法的执行顺序

    在For循环中执行setTimeOut()方法的代码,执行顺序是怎样的呢? 代码如下 function time() { for(var i= 0;i<5;i++){ setTimeout(fu ...

  4. Java集合类ArrayList循环中删除特定元素

    在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素. 一种错误的方式: <pre name="code" class="java"&g ...

  5. java,for循环中的穷举、迭代、冒泡例题

    1.100以内与7相关的数 //100以内与7相关的数: public static void main1(String[] args) { for(int i=1;i<=100;i++){ i ...

  6. java的for循环中遇到异常抛出后继续循环执行

    @Testpublic void loopTryCatchTest() throws Exception { Map<String, Object> a = new HashMap(); ...

  7. python中for循环中的循环变量

    废话不多说,代码伺候: for i in range(3): print("hello") print(i) 运行结果如下: 从上面的例子可以看出,for循环里面的循环变量i作用域 ...

  8. java 在循环中删除数组元素

    在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayL ...

  9. Java 循环中标签的作用

    continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环.在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使 ...

随机推荐

  1. Vuejs自定义全局组件--loading

    不管是使用框架,还是不使用任何的框架,我们都不可避免的需要与“加载中……”打交道,刚刚学习了Vuejs自定义组件的写法,就现学现卖,介绍一下吧! 先看一下目录结构,一般情况下,每一个组件都新建一个新的 ...

  2. python中列表删除和多重循环退出

    在学习python的时候,会有一些梗非常不适应,在此列举列表删除和多重循环退出的例子: 列表删除里面的坑 比如我们有一个列表里面有很多相同的值,假如:nums=[1,6,6,3,6,2,10,2,10 ...

  3. HDU1848 Fibonacci again and again 博弈 SG函数

    题意:三堆石子,每次能拿走斐波那契数个石子,先取完石子胜,问先手胜还是后手胜  石子个数<=1000 多组数据 题目链接:http://acm.hdu.edu.cn/showproblem.ph ...

  4. 《算法》BEYOND 部分程序 part 2

    ▶ 书中第六章部分程序,加上自己补充的代码,包括快速傅里叶变换,多项式表示 ● 快速傅里叶变换,需要递归 package package01; import edu.princeton.cs.algs ...

  5. python学习笔记_week14

    Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. s1 import socket def handle_reques ...

  6. python中的center

    center(self,width,fillchar=None)让字符串居中显示,width定义字长度,fillchar定义空白处填充,不填写默认为空白 举个列子: 1 a = "hello ...

  7. scrapy爬行乌云网公开漏洞程序的分析

    # -*- coding: utf-8 -*- from datetime import datetime import pymongo import scrapy from wooyun.items ...

  8. eclipse中jdk源码调试步骤

    分析源码是学习一项技术内幕最有效的手段.由于正常的引入JAr包源码没法进行对源码打断点,想要深入了解源码不方便.下面就开始介绍源码调试的步骤. 1.在eclipse新建一个JAVA项目compare_ ...

  9. ubuntu-14.04中/boot分区不足的解决办法

    环境:ubuntu-kylin 或者 ubuntu-14.04,/boot单独分区工具:ubuntu的liveCD. 问题: 由于当初安装的时候,看网上说/boot很小,100M足以,于是单独分区,分 ...

  10. MongoDB 全部笔记

    1. MongoDB: 是NOSQL的一种, 特长是分布式用的,用于处理爬虫数据 2. mongoDB 与 redis mongoDB是最像关系型的非关系型数据,更加适用于大数据,redis则更倾向于 ...