Сопоставление кодов ошибок с исключениями
Например, при вызове метода в операционной системе Windows код ошибки ERROR_FILE_NOT_FOUND (или 0x02) преобразуется в исключение FileNotFoundException, а код ошибки ERROR_PATH_NOT_FOUND (или 0x03) — в DirectoryNotFoundException.
К сожалению, точные условия возникновения определенных кодов ошибок в операционной системе часто не документируются или документируются в недостаточном объеме. Это означает, что возможны непредвиденные исключения. Например, при работе с каталогом логично ожидать, что передача недопустимого пути в конструктор DirectoryInfo приведет к созданию исключения DirectoryNotFoundException. Но в этой ситуации может создаваться и FileNotFoundException.
Обработка исключений при операциях ввода-вывода
По причине зависимости от операционной системы иногда идентичные условия (например, отсутствие указанного каталога) могут создавать в методах ввода-вывода любое исключение из класса ввода-вывода. Это означает, что при вызове интерфейсов API ввода-вывода ваш код должн быть готов обработать все такие исключения или большую их часть, как показано в следующей таблице:
Обработка IOException
IOException является базовым классом для исключений в пространстве имен System.IO и создается для любого кода ошибки, который не имеет сопоставления с определенным типом исключения. Это означает, что оно может появиться в любой операции ввода-вывода.
Так как IOException является базовым классом для других типов исключений в пространстве имен System.IO, его нужно обрабатывать в блоке catch после обработки других исключений, связанных с вводом-выводом.
Обратите внимание, что в коде обработки исключений IOException всегда нужно обрабатывать последним. Иначе блоки catch для производных классов не проверяются, ведь это исключение является базовым классом для всех остальных.
В случае с IOException дополнительные сведения об ошибке можно получить из свойства IOException.HResult. Чтобы преобразовать значение HResult в код ошибки Win32, отбросьте верхние 16 бит из 32-разрядного значения. В приведенной ниже таблице перечислены коды ошибок, которые могут быть заключены в IOException.
| HResult | Константа | Описание |
|---|---|---|
| ERROR_SHARING_VIOLATION | 32 | Отсутствует имя файла, или файл или каталог уже используется. |
| ERROR_FILE_EXISTS | 80 | Файл уже существует. |
| ERROR_INVALID_PARAMETER | 87 | Методу передан недопустимый аргумент. |
| ERROR_ALREADY_EXISTS | 183 | Файл или каталог уже существует. |
Для обработки этих исключений можно применить предложение When в инструкции catch, как показано в приведенном ниже примере.
File Not Found Exception Класс
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Исключение, которое выдается при попытке получить доступ к файлу или каталогу, которых нет на диске.
Комментарии
FileNotFoundException использует COR_E_FILENOTFOUND HRESULT, имеющий значение 0x80070002.
Если код не имеет PathDiscovery разрешения, сообщение об ошибке для этого исключения может содержать только имена файлов или каталогов, а не полные пути.
Конструкторы
Инициализирует новый экземпляр класса FileNotFoundException строкой сообщений, настроенной на отображение предоставляемого системой сообщения.
Инициализирует новый экземпляр класса FileNotFoundException с указанными данными о сериализации и контексте.
Инициализирует новый экземпляр класса FileNotFoundException с указанным сообщением об ошибке.
Инициализирует новый экземпляр класса FileNotFoundException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.
Инициализирует новый экземпляр класса FileNotFoundException с заданным сообщением об ошибке и именем файла, который не удается найти.
Инициализирует новый экземпляр класса FileNotFoundException с заданным сообщением об ошибке, именем файла, который не удается найти, и ссылкой на внутреннее исключение, являющееся причиной данного исключения.
Свойства
Возвращает коллекцию пар «ключ-значение», предоставляющую дополнительные сведения об исключении.
Получает имя файла, который не удается найти.
Возвращает имя журнала, в котором описано, почему закончилась неудачей загрузка сборки.
Получает или задает ссылку на файл справки, связанный с этим исключением.
Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.
Возвращает экземпляр класса Exception, который вызвал текущее исключение.
Возвращает сообщение об ошибке с объяснением причин исключения.
Возвращает или задает имя приложения или объекта, вызывавшего ошибку.
Получает строковое представление непосредственных кадров в стеке вызова.
Возвращает метод, создавший текущее исключение.
Методы
Определяет, равен ли указанный объект текущему объекту.
При переопределении в производном классе возвращает исключение Exception, которое является первопричиной одного или нескольких последующих исключений.
Служит хэш-функцией по умолчанию.
Устанавливает объект SerializationInfo с именем файла и дополнительными сведениями об исключении.
При переопределении в производном классе задает объект SerializationInfo со сведениями об исключении.
Возвращает тип среды выполнения текущего экземпляра.
Создает неполную копию текущего объекта Object.
Возвращает полное имя данного исключения и, возможно, сообщение об ошибке, имя внутреннего исключения и трассировку стека.
События
Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.
Как решить эту ошибку System.IO.FileNotFoundException
Просмотрщик событий
BtnUseDesktop_Click
AvSwitcher, в который входит событие Click Click
Ответов: 5
Я ненавижу указывать на очевидное, но System.IO.FileNotFoundException означает, что программа не нашла указанный вами файл. Итак, что вам нужно сделать, это проверить, какой файл ищет ваш код на производстве.
Чтобы посмотреть, какой файл ищет ваша программа на производстве (посмотрите на свойство FileName исключения), попробуйте следующие методы:
Затем посмотрите файловую систему на компьютере и посмотрите, существует ли файл. Скорее всего, дело в том, что его не существует.
Я столкнулся с подобной ситуацией после публикации приложения ClickOnce, и один из моих коллег из другого домена сообщил, что он не запускается.
Чтобы узнать, что происходит, я добавил оператор catch catch внутри метода MainWindow, как @BradleyDotNET, упомянутый в одном комментарии к исходному сообщению, а затем снова опубликован.
Затем мой коллега сообщил мне подробности об исключении, и это была недостающая ссылка на файл dll сторонней структуры.
Я ошибался этой ошибкой несколько раз. После того, как вы потратили часы на поиск в Google, обновление пакетов nuget, проверку версий, а затем после сидения с полностью обновленным решением, я переосмыслил совершенно правильную, более простую причину ошибки.
Внимательно проверьте все ссылки
Для меня очистка всего решения путем удаления вручную, обновление (удаление и добавление) ссылок снова с синхронизированной версией с целевой машиной, а затем создание с помощью функции «Копировать локальное»> «Ложь для сборки GAC» решает проблему.
Я открыл и построил другой проект в Visual Studio, а затем снова открыл проект с этой ошибкой. Я его построил и решил.
File Not Found Exception Конструкторы
Определение
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Инициализирует новый экземпляр класса FileNotFoundException строкой сообщений, настроенной на отображение предоставляемого системой сообщения.
Инициализирует новый экземпляр класса FileNotFoundException с указанным сообщением об ошибке.
Инициализирует новый экземпляр класса FileNotFoundException с указанными данными о сериализации и контексте.
Инициализирует новый экземпляр класса FileNotFoundException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.
Инициализирует новый экземпляр класса FileNotFoundException с заданным сообщением об ошибке и именем файла, который не удается найти.
Инициализирует новый экземпляр класса FileNotFoundException с заданным сообщением об ошибке, именем файла, который не удается найти, и ссылкой на внутреннее исключение, являющееся причиной данного исключения.
FileNotFoundException()
Инициализирует новый экземпляр класса FileNotFoundException строкой сообщений, настроенной на отображение предоставляемого системой сообщения.
Комментарии
Этот конструктор инициализирует Message свойство нового экземпляра, сопоставляя с ним системное сообщение, описывающее ошибку, например «не удалось найти указанный файл». Это сообщение учитывает культуру текущей системы.
См. также раздел
Применяется к
FileNotFoundException(String)
Инициализирует новый экземпляр класса FileNotFoundException с указанным сообщением об ошибке.
Параметры
Текстовое описание ошибки. Содержимое message должно быть понятно пользователю. Для гарантированной локализации этой строки для текущей системной культуры необходимы сведения о том, кто вызывает этот конструктор.
Комментарии
См. также раздел
Применяется к
FileNotFoundException(SerializationInfo, StreamingContext)
Инициализирует новый экземпляр класса FileNotFoundException с указанными данными о сериализации и контексте.
Параметры
Объект, содержащий сериализованные данные объекта о возникающем исключении.
Объект, содержащий контекстные сведения об источнике или назначении.
См. также раздел
Применяется к
FileNotFoundException(String, Exception)
Инициализирует новый экземпляр класса FileNotFoundException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.
Параметры
Текстовое описание ошибки. Содержимое message должно быть понятно пользователю. Для гарантированной локализации этой строки для текущей системной культуры необходимы сведения о том, кто вызывает этот конструктор.
Комментарии
В следующей таблице показаны первоначальные значения свойств для экземпляра FileNotFoundException.
| Свойство | Значение |
|---|---|
| InnerException | Ссылка на внутреннее исключение. |
| Message | Строка сообщения об ошибке. |
Не запускается приложение на чистой системе «System.IO.FileNotFoundException»
Ошибка: «Не удалось привести тип объекта «System.ConsoleKeyInfo» к типу «System.IConvertible».»
При запуске пишет, что «Не удалось привести тип объекта «System.ConsoleKeyInfo» к типу.
Неявное преобразование типа «System.Drawing.Icon» в «System.Drawing.Image» невозможно
ПОдскажите как можно вставить рисунок в панель если использую ico. Неявное преобразование типа.
Приложение не запускается на машине с Windows 2003: «не является приложением Win32»
Я начинающий. VS express 2012 для Windows Desktop стоит на 7-ке х64. Создаю на Visual C#.
Необработанное исключение типа «System.Net.Sockets.SocketException» в System.dll
Доброго времени суток! Есть следующая статья: Разработка прокси-сервера на C# В самом конце есть.
То есть Ваша программа работает с каким-то файлом, который есть на вашем компе, но которого, по-видимому, нет на компах Ваших друзей. Ищите в коде, с каким.
Даже если это допустим
C:\Windows\system32\какая_то_библиотека.dll (причем такая библиотека, которой на винде есть ну ВСЕГДА)
то на точно той же версии ОС, но 64-разрядной, этой библиотеки может в той же папке не оказаться, а окажется она в
C:\Windows\SysWow64\какая_то_библиотека.dll
В любом случае, где-то в коде у вас зашит абсолютный путь к файлу, какого на других компах нет.
А может и не абсолютный, а относительный, скажем рядом с ехе должен лежать какой-то файл, а вы его забываете прилагать к ехе друзьям.
Хммм, может установлен плохо?
Я вообще не выдаю какой-то инсталлятор авезомиума клиентам, а просто кладу рядом с ехе набор его библиотек.
Попробуйте и вы так.
Попробуйте все вот эти библиотеки рядом с ехе положить. http://rghost.ru/57476246
Лишние (типа Awesomium.Mono) убрать никогда не поздно
та я поставил его на всякий случай. Вдруг из-за него, но оказалось нет.(Сейчас попробую ваши библотеки приложить). Просто у меня там тоже приложены dll которые ВС сама кладет в папку Debug
Добавлено через 4 минуты
Как я и думал проблема не в dll авесомиума, а чем то другом. Даже уже не знаю что делать. Я вот на 100% уверен, ч то если я Visual Studio туда поставлю, то все заработает.
Добавлено через 1 минуту
ааа, я еще кое что не сказал. У меня приложение сначала открывает 1 окно с картинкой, ну как у фотошопа. А потом должно открываться 2 окно рабочей программы, и вот на нем и выбивает с ошибкой.
Это ни о чем мне не говорит, кода я не вижу.