Я использую Ranorex, инструмент автоматизации тестирования, основанный на С#, и у меня есть вопрос: обработка исключений и повторное создание исключения. Я новичок в программировании на С#, поэтому, пожалуйста, потерпите меня! Рассмотрим следующий код:
Дочерний класс/метод..
try
{
do something;
'unhandled exception on line 150'
}
catch (exception)
{
throw;
}
родительский класс/метод
try
{
childmethod();
}
catch (exception ex)
{
report.info("Info",ex.Stacktrace);
}
Что я хотел бы сделать, так это сообщить номер строки, в которой произошло исключение, в дочернем классе/методе, но в обработчике исключений родительского класса. Таким образом, в каждом дочернем классе/методе мы можем просто повторно сгенерировать (выбросить) исключение обратно в мастер-класс/метод (т. е. тестовый пример в терминах Ranorex). В родительском обработчике исключений у нас есть другие задачи, такие как отчет о деталях системы, закрытие приложения и провал теста. Мы хотим сделать это только в одном месте, поэтому поместим класс верхнего уровня. Однако, используя приведенный выше код, stracktrace показывает номер строки в дочернем обработчике исключений, который выдает повторно, а также номер строки, в которой был вызван дочерний метод. Также было бы полезно, если бы мы могли просто извлечь из трассировки стека что-то в формате вроде
Class = 'class name' & Method = 'method name' & Line Num = 'line num'
а не все сообщение трассировки стека.
Мы используем .net v4.0
Спасибо за помощь.
Трассировки стека:
The stacktrace information is: at System.Data.DataRow.GetDataColumn(String columnName)
at System.Data.DataRow.get_Item(String columnName)
at ABCTest.SUD.Plat.NewFU.NewFUUserCode.MainMethod(String testDataInstanceId) in c:\Ranorex Local Code\ABCTest\ABCTest\SUD\Plat\NewFU\NewFUUserCode.cs:line 103
at ABCTest.SUD.Plat.NewFU.NewFUUserCode.MainMethod(String testDataInstanceId) in c:\Ranorex Local Code\ABCTest\ABCTest\SUD\Plat\NewFU\NewFireFUUserCode.cs:line 130
at ABCTest.Tests.ManageFAndS.ManACA_IO_One.MainMethod() in c:\Ranorex Local Code\ABCTest\ABCTest\Tests\ManageFAndS\ManACA_IO_One.cs:line 59