Я наткнулся на следующий фрагмент кода. Имена были изменены, чтобы защитить невинных:
public void RunProgram()
{
System.IO.FileInfo fInfo = new System.IO.FileInfo(Application.StartupPath + "Program.exe");
if (!fInfo.Exists)
{
System.Windows.Forms.MessageBox.Show("Program could not be found, please verify your installation.\n\nDetails:\n" + fInfo.FullName);
return;
}
try
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo pStart = new System.Diagnostics.ProcessStartInfo();
pStart.FileName = fInfo.FullName;
pStart.UseShellExecute = true;
process.StartInfo = pStart;
process.Start();
}
catch
{
System.Windows.Forms.MessageBox.Show(string.Format("An error occurred trying to run the program:{0}", fInfo.FullName));
}
}
Я знаю, что здесь что-то не так:
- Типы исключений не обрабатываются индивидуально
- Сообщение об ошибке недостаточно информативно
Будьте уверены, я тоже буду к ним обращаться, но мой главный вопрос касается проверки существования файла непосредственно перед блоком try / catch. Это кажется мне немного излишним.
Точка обработки исключений заключается в обнаружении непредвиденных ситуаций. Я полностью ожидаю, что файл будет там, поэтому сняв проверку существования и просто позволяя обработке исключений перехватить его, если это не кажется мне разумным решением.
Что вы думаете?