Erros Elegantes em C# com string.Format

“Eram tempos em que até as mensagens de erro exigiam elegância.”

Imagine um sistema não como uma simples arquitetura de código, mas como um organismo vivo, pulsando com intenções e interações. Onde cada linha, carrega em si responsabilidade. E quando algo dá errado – porque sempre dá – a máquina precisa responder. Mas como ela deve falar conosco?

É aí que entra o nosso protagonista: a internacionalização (i18n).

Afinal, não adianta mostrar um erro genérico, se existem ocasiões específicas, por que não escalar?

Esse trecho de código representa exatamente o que iremos aprender:

{
  "Key": "ProductNotFound",
  "LocalizedValues": {
    "en-US": "Product \"{0}\" was not found",
    "pt-BR": "O produto \"{0}\" não foi encontrado"
  }
}

A ideia aqui é simples: ao invés de mostrar diretamente uma string, você mostra um valor com base na chave e no idioma atual do usuário; O {0} é um placeholder para valores dinâmicos, que podemos formatar com string.Format, que encaixa as peças do quebra-cabeça, substituindo os {0}, {1}, na string pela informação que queremos exibir.

Um exemplo de como podemos fazer isso diretamente é:

var nome = "João";
var mensagem = string.Format("Olá, {0}!", nome);

E quando estamos usando o Localizer, podemos fazer a mesma formatação, ficando:

ThrowError(string.Format(_localizer["product:ProductNotFound"], product.Name));

O que esta sendo feito é, uma busca por uma string correspondente à chave, de acordo com o idioma atual, o string.Format substitui o {0} da mensagem pela nossa variável; Ao final, dispara o erro para que no FrontEnd possa ficar mais claro que o erro, neste exemplo, é naquele produto em específico.

Sempre que o sistema precisar informar que algo deu errado, de forma clara, contextual e no idioma do usuário, este método é bem vindo.

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*


Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.