如何在发生异常后继续循环?
foreach (var oItem in List<Client>)
switch (oItem.Name)
{
case "one":
{
break;
}
case "two":
case "three":
{
break;
}
}
}
当在块情况下一个抛出异常时,我想继续阻塞两个或另一个块取决于循环的值。
可能吗?
因为每个案例都代表从每个客户端通过FTP下载数据,所以当客户端的数据抛出异常时,并不意味着客户端的其他数据也不好。 在循环结束时,我将输出已下载的客户端数据以及哪个数据不良提前谢谢你, 甜菊
答案 0 :(得分:3)
将抛出异常的代码放在try / catch块中。
case "one":
{
try
{
//Code that may break
}
catch (Exception ex)
{
//Deal with the exception
}
break;
}
但是你真的应该找出为什么它会抛出异常,并确保如果你处于导致异常发生的情况下你不执行代码。< / p>
答案 1 :(得分:2)
为此,你需要通过像
这样的代码传递异常注意:如果可能在seprate文件中记录异常,以便您可以获取有关哪些项目获得异常的信息
foreach (var oItem in List<Client>)
{
try
{
switch (oItem.Name)
{
case "one":
{
}
break;
case "two":
case "three":
{
}
break;
}
}
catch(Exception ex){ // log exception }
}
答案 2 :(得分:0)
如果在循环内捕获异常,循环将继续
答案 3 :(得分:0)
foreach (var oItem in List<Client>)
{
ret_val=call_switch(oItem.Name);
}
------------
private string call_switch(string val_str)
{
string ret_val="";
try
{
switch (oItem.Name)
{
case "one":
{
ret_val="valuee.. ";
}
break;
case "two":
case "three":
{
}
break;
}
}
catch(Exception ex){ //... }
return ret_val;
}