.NET 4.x Возникает исключение, минуя try-catch - C#

Узнай цену своей работы

Формулировка задачи:

Всем добрый день. Имею следующую проблему. Написана серверная часть программы, которая из определенной очереди забирает в однопоточном режиме запросы и выполняет их в отдельных потоках. Все работает вроде бы круто, пока не стали проводить нагрузочное тестирование. И тут появились некоторые подводные камни, точнее один основной большой камень. При нагрузке сервера через некоторое время(каждый раз примерно разное) появляется окошко, что произошла ошибка в приложении и предложение завершить приложение и отладить. В инфо ничего вразумительного не написано, но когда закрываешь это окошко, в консоль пишется исключение:
Необработанное исключение:Необработанное исключение: System.Reflection.TargetIn vocationException: Адресат вызова создал исключение. ---> System.AccessViolation Exception: Попытка чтения или записи в защищенную память. Это часто свидетельств ует о том, что другая память повреждена. в CryptoPro.Sharpei.NetDetours.NativeDetourEntryPoint.OnAssemblyLoadEvent(Ass embly loadedAssembly) в System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnl y, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boo lean& bNeedSecurityCheck) в System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheck This, Boolean fillCache) в System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean sk ipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) в System.Activator.CreateInstance(Type type, Boolean nonPublic) в System.Xml.Serialization.TempAssembly.get_Contract() в System.Xml.Serialization.TempAssembly.InvokeReader(XmlMapping mapping, XmlR eader xmlReader, XmlDeserializationEvents events, String encodingStyle) в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, Str ing encodingStyle, XmlDeserializationEvents events) в System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) в ********************(********) в **********************.cs:строка 377 в ********************(********) в **********************.cs:строка 134 --- Конец трассировки внутреннего стека исключений --- в System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Obj ect target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAtt ributes, RuntimeType typeOwner) в System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Obje ct target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner) в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeA ttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibi lityChecks) в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeA ttr, Binder binder, Object[] parameters, CultureInfo culture) в System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) в ********************(********) в **********************.cs:строка 83 в ********************(********) в **********************.cs:строка 100 в ********************(********) в **********************.c s:строка 79 в System.Threading.ThreadHelper.ThreadStart_Context(Object state) в System.Threading.ExecutionContext.runTryCode(Object userData) в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCle anup(TryCode code, CleanupCode backoutCode, Object userData) в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionCon text, ContextCallback callback, Object state) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, Co ntextCallback callback, Object state, Boolean ignoreSyncCtx) в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, Co ntextCallback callback, Object state) в System.Threading.ThreadHelper.ThreadStart(Object obj)
Звездочками пометил свои пользовательские методы и имена файлов. Казалось бы все тривиально и в исключении все написано. Но весь смак в том, что весь код обложен try-ями вида:
Листинг программы
  1. try
  2. { }
  3. catch(Exception ex)
  4. { }
И данное исключение не исключение Т.е. код, на который идет ссылка в трейсе лежит внутри выше описанного try-я. Собственно у меня и вопрос, может ли быть так, что исключение не перехватывается в силу каких-либо обстоятельств, и если это возможно, то какие должны быть обстоятельства? Всем заранее спасибо за помощь.

Решение задачи: «.NET 4.x Возникает исключение, минуя try-catch»

textual
Листинг программы
  1. using System.Runtime.ExceptionServices;
  2. ..
  3. [HandleProcessCorruptedStateExceptions]
  4. static void Main()
  5. {
  6.     try
  7.     {
  8.         // этот метод может привести к падению приложения!
  9.         dangerousMethod();
  10.     }
  11.     catch(Exception e)
  12.     {
  13.         // если метод dangerousMethod() создал ошибку которая приводит к падению
  14.          Console.WriteLine("не упало");
  15.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы