Я новичок в программировании, а F # - мой первый язык.F #: Выход из цикла
У меня есть список URL-адресов, которые при первом доступе либо возвратили ошибку HTTP 404, либо опытное время ожидания шлюза. Для этих URL-адресов я хотел бы попытаться получить доступ к ним еще 3 раза. В конце этих трех попыток, если ошибка WebException все еще запущена, я предполагаю, что URL-адрес не существует, и я добавлю его в текстовый файл, содержащий все недопустимые URL-адреса.
Вот мой код:
let tryAccessingAgain (url: string) (numAttempts: int) =
async {
for attempt = 1 to numAttempts do
try
let! html = fetchHtmlAsync url
let name = getNameFromPage html
let id = getIdFromUrl url
let newTextFile = File.Create(htmlDirectory + "\\" + id.ToString("00000") + " " + name.TrimEnd([|' '|]) + ".html")
use file = new StreamWriter(newTextFile)
file.Write(html)
file.Close()
with
:? System.Net.WebException -> File.AppendAllText("G:\User\Invalid URLs.txt", url + "\n")
}
Я испытал fetchHtmlAsync, getNameFromPage и getIdFromUrl в F # Interactive. Все они отлично работают.
Если мне удастся загрузить содержимое HTML-адреса URL-адреса без использования всех трех попыток, я, очевидно, хочу немедленно выйти из цикла for-loop. Мой вопрос: как я могу это сделать?