Oi Victor, tudo bem?
A questão aqui é que o valor None em Python não causa um TypeError quando tentamos imprimi-lo, por isso, o bloco try não falha e o except não é executado.
O TypeError seria lançado se você tentasse realizar uma operação que não é suportada com o tipo de dado. Por exemplo, se você tentasse adicionar um número a uma string, você teria um TypeError.
No seu caso, você quer imprimir o valor, e None pode ser impresso, então não há erro. Em vez disso, o Python imprime "None".
Se você quer que "Projeto não disponível" seja impresso quando o valor for None:
for projeto in projetos:
if projeto:
print(f"Projeto: {projeto}")
else:
print("Projeto não disponível.")
Nesse caso, a condição if projeto: verifica se o valor de projeto é verdadeiro. Em Python, None é considerado um valor "falso", então, quando projeto é None, a condição falha e "Projeto não disponível" é impresso.
Espero ter ajudado.
Um abraço e bons estudos.