Каков наилучший способ обработки определенного исключения Win32, такого как «приложение не найдено»? - PullRequest
0 голосов
/ 21 декабря 2018

Я запускаю процесс с приложением по умолчанию для типа файла, но если пользователь удалил свое приложение по умолчанию, выдается исключение Win32Exception.Кроме того, в других случаях возникает исключение Win32Exception, например, если у пользователя нет прав на открытие приложения по умолчанию.

Теперь я ищу лучший способ разделения между исключениями.

Как я могу проверить, какое именно исключение выдается?Это единственный способ проверить это с помощью сообщения об исключении?

Я уловил это так:

        try
        {
            process.Start();
        }
        catch (Win32Exception exc)
        {
//How to check which exception exactly is thrown?
            return return string.Format("Process cannot be started", exc.Message)
        }

Это была первая идея, но я думаю, что есть лучший способ выполнитьэто задание:

catch (Win32Exception exc)
        {
            if(exc.Message == "Application not found")
            { 
              //Do something
            }
            else if(exc.Message == "Another exception")
            { 
              //Do something else
            }
        }

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Win32Exception имеет свойство с именем ErrorCode, которое возвращает ошибку HRESULT.При этом вы можете правильно классифицировать свое исключение в соответствии с этой ссылкой здесь.

0 голосов
/ 21 декабря 2018

Вы можете использовать этот синтаксис

catch (Win32Exception exc) when exc.HResult == -1283782 
{
   ///
}
...