Прикрепите Stacktrace к исключению, не бросая в c# / .netC#

Место общения программистов C#
Ответить
Anonymous
 Прикрепите Stacktrace к исключению, не бросая в c# / .net

Сообщение Anonymous »

У меня есть компонент, который обрабатывает ошибки с использованием возвращаемых значений, в отличие от стандартной обработки исключений. В дополнение к коду ошибки, он также возвращает трассировку стека, где произошла ошибка. Обертка, которую я использую для вызова компонента, будет интерпретировать коды возврата и бросить исключение. Я бы хотел, чтобы это выглядело так, как будто исключение было выброшено с исходного сайта ошибки, даже если оно было брошено в другом месте. , более конкретно, я бы хотел, чтобы трассировка стека, отображаемое тестовым бегуном Visual Studio, отразил правильное место. Также было бы неплохо, если бы я мог избежать низкоуровневых приемов с размышлениями, доступа к частным участникам, но я возьму то, что могу получить. Переопределенное свойство полностью < /p>

Код: Выделить всё

CustomException GenerateExcpetion()
{
return new CustomException();
}

void ThrowException(Exception ex)
{
Trace.WriteLine("Displaying Exception");
Trace.WriteLine(ex.ToString());
var edi = ExceptionDispatchInfo.Capture(ex);
edi.Throw();
}

[TestMethod]
public void Test006()
{
var ex = GenerateExcpetion();
ThrowException(ex);
}

public class CustomException : Exception
{
string _stackTrace;
public CustomException()
{
_stackTrace = Environment.StackTrace;
}

public override string StackTrace
{
get
{
return base.StackTrace;
}
}
}
exection.tostring () метод извлечена данные трассировки стека из частной собственности, и поэтому трасса стека, исходящая от переопределения, не показана.
customexception: Исключение типа 'customexception' был брошен. Любой из этих данных, и когда вы бросаете это пользовательское исключение, к исключению прикреплено новое след стека с тем местом, из которого он бросается. Если вы используете бросок напрямую, информация о частном стеке установлена ​​на место, где произошел бросок.

Подробнее здесь: https://stackoverflow.com/questions/370 ... -sharp-net
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»