异常处理

当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. Motherboard Chipsets and the Memory Map.主板芯片组与内存映射

    原文标题:Motherboard Chipsets and the Memory Map 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外 ...

  2. 解决IIS7下主机名灰色无法修改问题

    打开IIS ,找到网站,右击编辑绑定时: 关于导入iis   .pfx格式的证书后,编辑绑定时,主机名为灰色的问题 解决方法 : (1)打开C:\Windows\system32\inetsrv\co ...

  3. SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  4. sql语句基础(一)

    数据库基本操作  创建数据库  CREATE DATABASE database-nam 2.  删除数据库 drop database dbname 3. 备份sql server --- 创建 备 ...

  5. python协程的使用

    1.Python对协程的支持是通过generator(生成器 yield)实现的.协程执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行. 2.调用生成器运行的过程中 ...

  6. atom编辑器适用

    因为要在多平台下适用node,同事推荐atom.所以下载了进行试用. 1.下载 https://atom.io/

  7. c#序列化Json和反序列化

    1.首先确保程序集中添加了  System.Web.Extensions    DLL引用 2.代码中添加命名空间:using System.Web.Script.Serialization; nam ...

  8. [转]让linux的coredump文件

    原文标题:gdb结合coredump定位崩溃进程 原文:http://lazycat.is-programmer.com/posts/31925.html 这个文件中说的方法我试过了,在CentOS和 ...

  9. day14-函数

    1.定义函数 一个函数就是封闭一个功能def 函数名(): 函数代码注意:函数名不要用默认的关键字.否则会将默认关键字函数覆盖掉. 命名规则与变量相同,使用字母.数字.下划线组成,不能以数字开关 2. ...

  10. BBS-基于forms组件和ajax实现注册功能

    http://www.cnblogs.com/yuanchenqi/articles/7638956.html 1.设计注册页面 views.py from django import forms c ...