2014-02-07 1 views
0

Есть кусок логики, которая выглядит следующим образом:Попытка обработать файл существует в vb.net VS2010

Dim fInfo As New FileInfo(LocationDir & Filename) 
If Not fInfo.Exists Then 
    Console.WriteLine("File does not exist." & Filename) 
    Throw New Exception("File does not exist." & Filename) 
End If 

Это должно бросить исключение, прекратить выполнение всего модуля, и выйти. Поймите, это не мирное окончание. Когда я получаю, есть необработанная ошибка. и, кроме консоли, появляется другое окно: приложение не работает и должно быть закрыто или отлажено. Думаю, мне нужно обработать грациозное завершение работы модуля. Какие-либо предложения?

Roland задал большой вопрос, где я могу уловить это пользовательское исключение. И я абсолютно честен, что после долгого поиска и чтения многое еще не могу понять, где и как я могу это поймать. Это может быть очень тривиально для опытных пользователей, но хотелось бы, чтобы часть кода использовалась в качестве базы.

+0

Куда вы поймаете это исключение? –

+0

И вот что я пытаюсь выяснить, как эффективно кодировать код исключения. Я знаю, что в настоящее время я не поймаю его – user3235631

+0

Мех, сначала найдите неэффективный код, который проще найти. Обработка исключений рассматривается в любой вводной книге по программированию VB.NET. Обратите внимание, что тест на самом деле бесполезен, у вас нет гарантии, что другой процесс не удалит файл через микросекунду позже. Этот тип кода просто не работает, поэтому просто не записывайте его. Откройте файл, который будет сбой, если он не существует, вы получите исключение бесплатно. –

ответ

0

Возможно, проще использовать функцию IO.FileExists и функцию IO.Path.Combine для построения пути.

If IO.File.Exists(IO.Path.Combine(LocationDir, Filename)) Then 
    'code 
End If 

У меня как минимум никогда не было проблем с этим. Также, как писал Роуленд, вы, конечно, должны поймать исключение, которое вы бросаете в свой код где-нибудь, если вы забыли.