Здравствуйте.
Если Вы ловите сами свои исключения, очевидно, у вас код выглядит так:
Код: Выделить всё
try {
doSmth();
} catch (Exception e) {
....
}
Очевидно - потому что у вас в коде, судя по всему, везде генерируется именно Exception, примерно так:
Код: Выделить всё
if (options == null)
throw new Exception("Failed to initialize the StiMvcViewer component. Please define the StiMvcViewerOptions to work correctly with the viewer.");
Если вы замените в каком-либо своем коде этот код на примерно такой:
Код: Выделить всё
public class StimulsoftException: Exception{
//constructors here
}
Код: Выделить всё
if (options == null)
throw new StimulsoftException("Failed to initialize the StiMvcViewer component. Please define the StiMvcViewerOptions to work correctly with the viewer.");
то ни один ваш catch не сломается, ибо сейчас вы все равно вынуждены писать catch(Exception)
Зато вот как раз вам будет легче отличать свои исключения от
исключений, которые возникают в используемых нами системных библиотеках, в пользовательских сборках или скриптах.
Не могли бы вы уточнить чем именно это затрудняет интеграцию?
О трудностях интеграции я писал на предыдущей странице.
Сейчас у меня, для решения проблем с компиляцией отчетов, написан следующий код:
Код: Выделить всё
try
{
report.Compile(fileName, StiOutputType.ClassLibrary);
}
catch (IOException)
{
throw;//наверняка нет прав доступа
}
catch (Exception e)
{
HandleMrtCompilationError(fileName, e, report);
}
Однако, я не могу быть уверен, что в я не перехватываю не релевантные исключения, например, OutOfMemory.
Если бы я мог написать так:
Код: Выделить всё
try
{
report.Compile(fileName, StiOutputType.ClassLibrary);
}
catch (StimulsoftException e)
{
HandleMrtCompilationError(fileName, e, report);
}
можно было бы быть уверенным, что сломалась именно компиляция отчета, а не что-то другое.
Заметьте, в таком варианте еще и убираются лишние секции catch() - они неизбежны при текущей реализации, throw new Exception()