Tipos de retornos para métodos que serão utilizados em webservices

Olá, pessoal.

Estou escrevendo uma classe que no final de tudo será transformada em um web service. Ela se parece muito com o cenário abaixo:

Class Classe {
  public void metodo1() { ... }
  public String metodo2() { ... }
  public Tipo[] metodo3() { ... } 
}

Essa classe pode gerar alguns erros que por sua vez podem ser facilmente tratados pela aplicação (exemplo: o tipo de registro que o usuário tenta mexer não existe) . Desse modo, resolvi transformar todos os métodos para retornar um int, que é zero em caso de sucesso ou o código de erro caso ocorra um erro que a aplicação deve tratar. Caso algum erro inesperado aconteça (ex.: erro de infra-estrutura), uma Exception é lançada.

Desse modo, é bem fácil transformar o método1 para retornar um int com o código de erro. Mas os outros métodos precisam que eu crie classes apenas para transportar esse novo resultado que passará a ser composto. Por exemplo, o método 2 não mais retornará um String mas sim um tipo Metodo2Response, que se parece com isso:

Class Metodo2Response {
  private int returnCode;
  private String value;

  // getters e setters
}

Essa solução, apesar de válida, gera uma certa inconsistência, pelo menos até onde eu posso ver: metodo1() retorna int com um código de sucesso ou erro; metodo2() e metodo3() retornam tipos complexos, que contêm o código de erro dentro deles…

Vale a pena fazer com que método1 também retorne um tipo complexo que contem somente um int com o código de retorno? Existe algum outro padrão ou método de resolver esse tipo de problema de forma limpa?