Сообщество программистов Autodesk в СНГ

ADN Club => Civil 3D API => Тема начата: Дмитрий Загорулькин от 29-09-2017, 12:38:43

Название: C3d2018+VS2017CE. Исключение eFilerError при запуске отладки.
Отправлено: Дмитрий Загорулькин от 29-09-2017, 12:38:43
Включил в студии остановку при возникновении исключений типа Autodesk.AutoCAD.Runtime.Exception и при запуске отладки в Civil 3D 2018 стал ловить такое исключение:
Цитировать
Exception thrown: 'Autodesk.AutoCAD.Runtime.Exception' in AcdbMgd.dll
Additional information: eFilerError
Именно при запуске, то есть, когда Сивил открывается, но моё приложение в него ещё не загружено. В 2014-2017 версиях такого нет.
Интересно, это только у меня так?
Можно как-то понять, какой ему файл не найти?
Скрин трассировки прилагаю.
Название: Re: C3d2018+VS2017CE. Исключение eFilerError при запуске отладки.
Отправлено: Александр Ривилис от 29-09-2017, 14:15:03
Можно как-то понять, какой ему файл не найти?
Это вряд ли. Но похоже это связано с меню (cuix-файл или что-то с ним связанное - скорее всего иконки). Я думаю, что это нормальная ситуация. HostApplicationServices.FindFile только так и может сообщить о том, что файл не найден.
Код - C# [Выбрать]
  1. // Autodesk.AutoCAD.Customization.CustomizationHostServices
  2. public string FindFile(string fileName)
  3. {
  4.         if (string.IsNullOrEmpty(fileName))
  5.         {
  6.                 return null;
  7.         }
  8.         string text = null;
  9.         try
  10.         {
  11.                 if (HostApplicationServices.Current != null)
  12.                 {
  13.                         text = HostApplicationServices.Current.FindFile(fileName, null, FindFileHint.Default);
  14.                 }
  15.         }
  16.         catch (Autodesk.AutoCAD.Runtime.Exception)
  17.         {
  18.         }
  19.         finally
  20.         {
  21.                 if (text == null && !Path.IsPathRooted(fileName))
  22.                 {
  23.                         string text2 = Path.Combine(Utils.IconFilePath(), fileName);
  24.                         if (File.Exists(text2))
  25.                         {
  26.                                 text = text2;
  27.                         }
  28.                 }
  29.         }
  30.         return text;
  31. }
Название: Re: C3d2018+VS2017CE. Исключение eFilerError при запуске отладки.
Отправлено: Дмитрий Загорулькин от 29-09-2017, 14:31:43
Вот оно что! Спасибо! То есть, если файл не найден, то генерируется исключение. Это исключение обрабатывается, но студия всё равно его отлавливает. Логично, т.к. у меня в настройках исключений как раз так и задано. Научить бы ещё студию останавливаться только в том случае, когда исключение происходит в моей сборке...
Название: Re: C3d2018+VS2017CE. Исключение eFilerError при запуске отладки.
Отправлено: Александр Ривилис от 29-09-2017, 14:36:48
Научить бы ещё студию останавливаться только в том случае, когда исключение происходит в моей сборке...
Думаю, что это тебе тоже ничего не даст. Технология AutoCAD .NET API построена на генерации исключений в тех случаях, когда в  чистом ObjectARX возвращается какой-то код ошибки (Acad::ErrorStatus).
Название: Re: C3d2018+VS2017CE. Исключение eFilerError при запуске отладки.
Отправлено: Дмитрий Загорулькин от 29-09-2017, 14:40:14
На самом деле даёт очень много. Я вижу где происходит исключение. Могу проверить значения переменных в момент, когда оно произошло. Это сильно помогает понять причину исключения.
Но вот такие "сторонние" прерывания немного мешают :)