我构建了一些CodeExample:
static void Main(string[] args)
{
foreach (String hello in helloList)
{
DoSomething(hello);
}
}
public static void DoSomething(String hello)
{
try
{
//Some Code
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadKey();
}
}
我正在迭代List,有时会发生,程序会进入Catch。现在,程序在Console.ReadKey();
之后终止 - 但我想要的是,回到foreach循环并继续工作......我怎样才能做到这一点?
从Catch,我只需要消息..
编辑: OriginalCode:
static void Main(string[] args)
{
//Some unimportant code
StringCollection bilderUnterLink = HoleBildLinksVonWebseite(htmlInhaltUnterLink);
foreach (String bild in bilderUnterLink)
{
BildAbspeichern(bild);
}
}
public static void BildAbspeichern(String bildLink)
{
string speicherOrt = webseite + @"/" + bildLink;
string gueltigerBildLink;
if (bildLink.Contains("http://"))
{
gueltigerBildLink = bildLink;
}
else
{
gueltigerBildLink = "http://" + webseite + @"/" + bildLink;
}
if (!File.Exists(webseite + @"/" + Path.GetFileName(gueltigerBildLink)))
{
try
{
WebClient client = new WebClient();
client.DownloadFile(gueltigerBildLink, speicherOrt);
Console.WriteLine(String.Format("Bild gepeichert: " + "{0}", gueltigerBildLink));
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadKey();
}
}
}
我认为这就是足够重要的代码..它终止了,我知道它不应该......
答案 0 :(得分:2)
这将在异常后继续循环。
由于您在DoSomething()
方法中捕获了异常,因此不会破坏循环。 <{1}}中只有未处理的异常会打破循环。
答案 1 :(得分:2)
如果它正在终止,我怀疑异常只是不在try
之内;所以......改变一下:
public static void BildAbspeichern(String bildLink)
{
try {
... all your code
} catch (Exception exception)
{
Console.Error.WriteLine(exception.Message);
Console.ReadKey();
}
}
其他说明:
Console.Error
以获取错误输出;良好做法(写入stderr
而不是stdout
)ReadKey()
您应该在using
上使用WebClient
,因为它是IDisposable
,即
using(var client = new WebClient()) {
client.DownloadFile(gueltigerBildLink, speicherOrt);
}