package sd.serialization;

/**
 * Exceção verificada (Checked Exception) que sinaliza falhas no processo de transformação de dados.
 * <p>
 * Esta classe atua como um wrapper unificador para erros ocorridos na camada de serialização,
 * abstraindo falhas de baixo nível (como erros de I/O, sintaxe JSON inválida ou incompatibilidade
 * de tipos) numa única exceção de domínio. Permite que o código cliente trate falhas de
 * protocolo de forma consistente, independentemente da implementação subjacente (Gson, Nativa, etc.).
 */
public class SerializationException extends Exception {
    
    private static final long serialVersionUID = 1L; // Long(64bits) instead of int(32bits)
    
    /**
     * Constrói uma nova exceção de serialização com uma mensagem descritiva.
     * * @param message A mensagem detalhando o erro.
     */
    public SerializationException(String message) {
        super(message);
    }
    
    /**
     * Constrói uma nova exceção encapsulando a causa raiz do problema.
     * Útil para preservar a stack trace original de erros de bibliotecas terceiras (ex: Gson).
     * * @param message A mensagem detalhando o erro.
     * @param cause A exceção original que causou a falha.
     */
    public SerializationException(String message, Throwable cause) {
        super(message, cause);
    }
    
    /**
     * Constrói uma nova exceção baseada apenas na causa raiz.
     * * @param cause A exceção original.
     */
    public SerializationException(Throwable cause) {
        super(cause);
    }
}