.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-ями вида:
try
{    }
catch(Exception ex)
{    }
И данное исключение не исключение Т.е. код, на который идет ссылка в трейсе лежит внутри выше описанного try-я. Собственно у меня и вопрос, может ли быть так, что исключение не перехватывается в силу каких-либо обстоятельств, и если это возможно, то какие должны быть обстоятельства? Всем заранее спасибо за помощь.

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

textual
Листинг программы
using System.Runtime.ExceptionServices;
..
[HandleProcessCorruptedStateExceptions]
static void Main()
{
    try
    {
        // этот метод может привести к падению приложения!
        dangerousMethod();
    }
    catch(Exception e)
    {
        // если метод dangerousMethod() создал ошибку которая приводит к падению
         Console.WriteLine("не упало");
    }

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


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

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

5   голосов , оценка 3.8 из 5
Похожие ответы