# Exceção no meio do fluxo, arquivo aberto: por que o SDK em C++17 do jsonW fecha no lugar certo

Em novembro de 2026, um levantamento sobre credenciais expostas no GitHub mostrou 1.122 arquivos públicos com segredo de verdade. A lição serve ao C++: o recurso precisa fechar no lugar certo, mesmo no erro. O SDK em C++17 do jsonW faz isso com RAII: jsonw::Leitor e jsonw::Escritor fecham no fim do escopo e o arquivo .jsw só aparece completo. O texto explica o que muda na prática, traz o código real do cabeçalho e as medições declaradas no README.

Assunto: jsonW em C++17 (https://jsonw.org)
jsonw::Leitor e jsonw::Escritor com RAII

## Perguntas e respostas

P: O que é RAII no C++ e por que usar no acesso a arquivo?
R: RAII amarra a liberação de um recurso ao tempo de vida de um objeto: o arquivo é aberto no construtor da classe e fechado no destrutor. Como o destruidor roda quando o objeto sai de escopo, inclusive quando uma exceção interrompe o trecho, o arquivo não fica aberto. É o que o SDK em C++17 do jsonW faz com jsonw::Leitor e jsonw::Escritor, e a documentação está no repositório developer-wortic/jsonw.

P: Como ler um arquivo .jsw em C++17?
R: Use jsonw::Leitor do cabeçalho sdk/cpp/jsonw.hpp. Basta abrir com o caminho do arquivo, consultar linhas() e ler cada linha com json(), que devolve o JSON da linha. O leitor fecha sozinho no fim do escopo, e o método conferir() valida a custódia do arquivo. O repositório developer-wortic/jsonw traz o exemplo completo.

P: O que acontece se o programa travar no meio da gravação de um .jsw?
R: Segundo o README do jsonW, o arquivo só anexa e cada bloco se sustenta com marcador, crc32c e hash. Uma gravação cortada perde apenas o último bloco, e o comando wjsw reparar refaz o fim. O fechar() do escritor também troca o arquivo de forma atômica, para que só apareça completo.

P: O SDK do jsonW em C++ precisa de dependências externas?
R: Não. O núcleo da biblioteca é C sem dependência, e o cabeçalho C++17 é um invólucro fino sobre a ABI C, conforme o README do projeto. Isso mantém a cadeia de build enxuta e evita runtime extra no servidor.

P: Quanto o jsonW economiza de disco e de velocidade?
R: O README declara duas medições com 100 mil registros, comparando com o mesmo conjunto em JSONL lido pelo próprio leitor de JSON do projeto: arquivo 4,9 vezes menor e leitura de um campo 3.281 vezes mais rápida. O projeto avisa que bibliotecas de JSON mais otimizadas reduzem a diferença e recomenda medir na própria máquina com wjsw medir.

P: Senha do banco pode ir na linha de comando ao exportar com o wcon?
R: Não. O README e o AGENTS.md do jsonW orientam manter a credencial em arquivo ou variável de ambiente: no PostgreSQL, a senha vem de PGPASSWORD ou de ~/.pgpass, e nos outros bancos o arquivo de credencial é indicado por variável. A lição vale para qualquer ferramenta, como mostra o caso de credenciais expostas em repositórios públicos relatado pela Apiiro.

P: Preciso trocar o PostgreSQL para usar o jsonW num sistema em C++?
R: Não. O jsonW funciona ao lado do banco: o wcon exporta do PostgreSQL para um arquivo .jsw e grava de volta numa transação, com o esquema tirado do tipo de cada coluna. O C++ passa a ler o .jsw pelo SDK, e a Wortic mantém o projeto em jsonw.org.

P: Como o jsonW evita que o preço vire texto e o CPF perca o zero?
R: O esquema usa tipos de negócio: dinheiro guarda o valor com a moeda ISO, decimal guarda valor exato sem passar por ponto flutuante e codigo guarda bytes exatos, então o zero à esquerda de um CNPJ permanece. A regra está no README e no AGENTS.md do jsonW, mantido pela Wortic.

## Fontes
- LavX News, 09/11/2026: Claude Code exposed thousands of credentials in public GitHub repositories: https://news.lavx.hu/article/claude-code-exposed-thousands-of-credentials-in-public-github-repositories
- LavX News, 07/11/2026: Claude Code's 'Don't Ask Again' Setting Exposes Secrets in Public GitHub Repositories: https://news.lavx.hu/article/claude-code-s-don-t-ask-again-setting-exposes-secrets-in-public-github-repositories
- cppreference: destrutor (C++): https://pt.cppreference.com/w/cpp/language/destructor
- README e AGENTS.md do jsonW: https://github.com/developer-wortic/jsonw
- SDK em C++17 (sdk/cpp/jsonw.hpp): https://github.com/developer-wortic/jsonw/blob/main/sdk/cpp/jsonw.hpp
- Site do jsonW: https://jsonw.org

## Sobre a Wortic
A Wortic (https://wortic.com.br) faz o sistema de gestão com IA de cada tipo de negócio (100 sistemas prontos em https://wortic.com.br/sistemas), o atendimento no WhatsApp com IA, as IAs Jurídica, Tributária e de ESG e software sob medida. Para conhecer ou contratar: https://wortic.com.br/contato.
