一、实例展示
static void Main(string[] args) {
//将异常写在循环外,出现异常循环终止
try {
Console.WriteLine("抛出异常不输出");
for (int i = 0; i < 5; i++) {
Console.WriteLine(i);
Convert.ToInt16("test");
}
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
//将异常写在循环内,不影响下一次循环
Console.WriteLine("抛出异常继续输出");
for (int i = 0; i < 5; i++) {
try {
Console.WriteLine(i);
if (i == 1) {
Convert.ToInt16("test");
}
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
Console.ReadKey();
}
说明:
- 将异常写在循环内,不影响下一次循环
- 将异常写在循环外,出现异常循环终止
总结:
- 当循环内的代码出现异常,需要结束循环时,将try代码块放在循环外;
- 当循环内的代码出现异常,需要继续执行循环时,将try代码块放在循环内。
public static void main(String[] args) {
int runs = 3; //循环运行次数
//try代码块在循环外
try {
for (int i = 0; i < runs; i++) {
if (i == 0) {
throw new RuntimeException("try在循环外时,出现运行异常");
}
System.out.println("do something...");
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("--------------------------");
//try代码块在循环内
for (int i = 0; i < runs; i++) {
try {
if (i == 0) {
throw new RuntimeException("try在循环内时,出现运行异常");
}
System.out.println("do something...");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
上面代码运行结果:
二、个人理解
理解1:外面。如果遇到异常,循环停止。如果放在循环里面,就会一直抛出异常信息,最后内存溢出。
理解2:
这个随便 看你的需求;
如果出异常了 你的for循环不想继续下去就放在外面;
放在里面还可以让for循环的后续循环继续运行。
理解3:个人建议:用在for里面的具体方法中,这样具有针对性。
理解4:一般都是for循环在try里面,很少能看见for循环里用try catch的