Обработка исключительных ситуаций и дальнейшее выполнение кода - C#
Формулировка задачи:
Всем добрый день,
столкнулся с такой проблемой: при нахождении какого-либо exception программа выполняет код из оператора catch и закрывает программу. Меня это не устраивает, т.к. в блоке try еще есть код, который обязательный к выполнению. Там идет чтение служб из списка и вывод их статуса. Но, когда попадается корявое название службы или т.п., то программа закрывается, не выводя остальные статусы служб.
Прошу помощи в решении данного вопроса. Как сделать так, чтобы выкидывалась запись в консоль о корявом имени и программа выполнялась дальше, а не закрывалась?
Решение задачи: «Обработка исключительных ситуаций и дальнейшее выполнение кода»
textual
Листинг программы
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.ServiceProcess; using System.Text; using System.Threading; using NLog; namespace TestConsole { class Program { static void Main(string[] args) { System.Console.WriteLine("Run"); bool _isRunning; _isRunning = true; try { while (_isRunning) { StartService(); Thread.Sleep(5000); } } catch (Exception ex) { System.Console.WriteLine("Unexpected exception: " + ex.Message, ex); } } public static void StartService() { var fileName = "../config.txt"; var services = new List<string>(); var watchingServices = new List<ServiceController>(); string tmpServices = null; int i = 0; try { using (var cfgSt = new StreamReader(fileName)) { while (!cfgSt.EndOfStream) tmpServices += cfgSt.ReadLine(); } services = (tmpServices.Split(',')).ToList(); foreach (var s in services) { watchingServices.Add(new ServiceController(services[i])); i++; } while (true) { foreach (var s in watchingServices) { if ((s.Status.Equals(ServiceControllerStatus.Stopped)) || (s.Status.Equals(ServiceControllerStatus.StopPending))) { System.Console.WriteLine("Service '{0}' has been crashed. Turning on...", s.DisplayName); s.Start(); System.Console.WriteLine("Service '{0}' started", s.DisplayName); } else { System.Console.WriteLine("Service '{0}' works normally", s.DisplayName); } } } } catch (Exception ex) { System.Console.WriteLine("Error has occured in working of service: " + ex.Message); //throw; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д