Ну, а почему бы просто не выбросить стандартные исключения SOAP? Проблема с кодами ошибок и сериализованным XML заключается в том, что им обоим требуется дополнительная логика, чтобы распознать, что ошибка действительно произошла. Такой подход полезен только в том случае, если у вас есть специализированная регистрация или логика, которая должна происходить на другой стороне веб-службы. Такой пример будет возвращать флаг, который говорит, что «это нормально, продолжить» с отчетом об исключительной ситуации.
Независимо от того, как вы его бросите, это не облегчит работу, поскольку вызывающая сторона все еще должна признать наличие исключения и разобраться с ним.