У меня есть глобальный обработчик ошибок, определенный как таковой (упрощенная / проприетарная информация очищена):
export class ErrorsHandler extends CommonBase implements ErrorHandler {
constructor(protected loggingService: LoggingService,
private coreService: CoreService {
super(loggingService);
}
handleError(error: Error) {
if (error && error.stack && (error.stack.indexOf(Constants.PACKAGE_NAME) >= 0)) {
this.logSystemError(error, true);
this.coreService.showSystemError(error, this.owner);
}
else {
// Rethrow all other errors.
throw error;
}
}
И в моем модуле (и только в моем модуле) он зарегистрирован как провайдер как таковой:
export function errorHandlerFactory(loggingService: LoggingService, coreService: CoreService) {
return new ErrorsHandler(loggingService, coreService);
}
providers: [
{ provide: ErrorHandler, useFactory: errorHandlerFactory, deps: [LoggingService, CoreService] }
]
Мой модуль используется другими, и вместе мы составляем одно большое приложение.
Моя проблема заключается в том, что ВСЕ ошибки скрипта обнаруживаются, хотя я пытаюсь отфильтровать те, которые имеют отношение только к моему модулю / пакету, потому что фильтрация выполняется в handleError()
. И даже несмотря на то, что я перебрасываю ошибки, которые мне не нужны (в else
выше), разработчики других модулей / пакетов жалуются, что я глобально ловлю все, и переброшенные ошибки, которые они получают, уже теряют определенный контекст / информацию.
Таким образом, вопрос в том, можно ли каким-то образом ограничить область действия моего обработчика ошибок, чтобы перехватывать и обрабатывать ТОЛЬКО ошибки скрипта, происходящие из моего модуля / пакета (при этом полностью игнорируя все другие ошибки скрипта в приложении)?
После долгих поисков, единственная альтернатива, которую я могу придумать, - это поставить try/catch
везде, чего я бы хотел избежать, если это вообще возможно.