Звучит так, будто вы действительно не хотите обрабатывать это исключение внутри Execute
. Кажется, что ответственность за обработку исключения лежит на коде, который вызывает Execute
.
Конечно, вы все еще можете поймать его, сохранить в ExecuterException
, зарегистрировать его, а затем повторно выбросить, используя throw;
- но цель ExecuterException
ускользает от меня. Похоже, он нужен вам только для IsSoapException
, который, в свою очередь, намного лучше записывается как ExecuterException is SoapException
, что даже заботится о пустоте и подклассах.
Я не думаю, что кто-либо может оказать какую-либо дополнительную помощь, кроме этой, не увидев код, который использует код, который вы опубликовали. Если этот код запрашивает ExecuterException
только сразу после вызова Execute
, то вы можете (и должны), вероятно, просто изменить его на try / catch в этом коде. Если он на самом деле запрашивает ExecuterException
в другом месте, то вы могли бы подумать о том, чтобы этот код сохранял ссылку вместо этого, но в любом случае это означало бы, что код довольно запутанный спагетти-код и, вероятно, в любом случае требует его переписывания.
(Кстати, просто чтобы придираться, первое из двух предложений catch в вашем коде полностью избыточно. Если вы удалите его, вы получите точно такое же поведение - если только logger.log
не имеет специальной перегрузки для SoapException
, но тогда вам, вероятно, тоже придется это реструктурировать.)