1
resposta

[Dúvida] Evitar exception de referência nula

Boa noite, professor!

Neste caso, como navegamos entre propriedades que podem ser nulas, devemos garantir que elas estejam populadas ou adicionar um verificador de nulidade, correto? Um exemplo é a abordagem abaixo e gostaria de saber se essa poderia ser uma abordagem correta.

public Funcionario GetDiretor()
{
    return this?.Departamento?.Escola?.Diretor; //seria correta essa abordagem?
}

Obrigado.

1 resposta

Olá João

Ótima pergunta! No código que você compartilhou, a abordagem de utilizar o operador de navegação segura (?.) é uma forma correta de evitar uma exceção de referência nula. Esse operador permite que você acesse uma propriedade ou método de um objeto mesmo se algum dos objetos na cadeia de chamadas for nulo.

No seu exemplo, se algum dos objetos this, Departamento, Escola ou Diretor for nulo, a expressão this?.Departamento?.Escola?.Diretor retornará nulo em vez de lançar uma exceção de referência nula. Isso evita que o programa pare de funcionar inesperadamente.

Essa abordagem é especialmente útil quando você não tem controle total sobre os objetos envolvidos na cadeia de chamadas e não pode garantir que eles sempre estarão populados. No entanto, é importante lembrar que o operador de navegação segura não resolve o problema da referência nula em si, apenas evita que uma exceção seja lançada. Portanto, é importante analisar o contexto do seu código e decidir se é necessário tomar alguma ação adicional para lidar com a referência nula, como retornar um valor padrão ou lançar uma exceção personalizada.

Espero ter ajudado! Bons estudos!