O bloco try-catch não deve ser codificado em todos os métodos de uma aplicação. Esse
                bloco deve ficar em pontos centrais para evitar excessos.
            
            
                Vamos utilizar um exemplo: uma aplicação Console possui um método principal de entrada 
                Main. Assim, codificamos nossas classes e seus métodos que são invocados pela Main onde 
                devemos centralizar a captura e tratamento de erros, log e exibição de mensagem amigável ao usuário,
                usando o bloco try-catch-finally:
            
            Exemplo 7
            
using System;
public class Classe1
{
    public Classe1(){}
    public void metodo1()
    {
        //pode ocorrer uma exceção
		Console.WriteLine("metodo1");
    }
}
public class Classe2
{
	public Classe1 cls1;
	
    public Classe2(Classe1 cls)
	{
		cls1 = cls;
	}
    public void metodo2()
    {
        //pode ocorrer uma exceção
		cls1.metodo1();
		Console.WriteLine("metodo2");
    }
}
public class Program
{
	public static void Main()
	{
		Classe1 cls1 = new();
		Classe2 cls2 = new(cls1);
		
		try
		{		
			cls2.metodo2();
		}
		catch(Exception)
		{
            //log do erro
            //tratamento
			//mensagem para o usuário
			Console.WriteLine("ocorreu um erro.");
		}
		finally
		{
			//liberação de recursos usados
			//Classe1, Classe2
		}
	}
}
            Saída
            
metodo1
metodo2
            
                Caso um método, semelhante a Main que centraliza o tratamento de erros, mas que seja utilizado 
                por outras classes. Esse método deve fazer o tratamento local nos blocos catch e 
                finally e relançar o erro para 
                o escopo em está sendo invocado.
            
            
                O bloco try-catch não deve ser utilizar para tratamento de entrada de dados do usuário 
                como campos vazios, valores com formato inválidos, por exemplo, que são condições normais de 
                acontecer.
            
            Exemplo 8: uso incorreto
            using System;
public class Classe1
{
	public int? codigo;
	public string nome;
}
public class Program
{
	public static void Main()
	{
		Classe1 cls = new();
		try
		{	
			//ENTRADA DO USUÁRIO OMITIDA
			if(cls.codigo == null)
			{
				//lançar exceção: "codigo não preenchido!"
			}
			if(cls.nome == null)
			{
				//lançar exceção: "nome não preenchido!"
			}
		}
		catch(Exception)
		{
            //tratamento
			Console.WriteLine("ocorreu um erro.");
		}
		finally
		{
			//liberação de recursos usados
			//Classe1
		}
	}
}
            
                Não deixe blocos catch vazios, pois podem mascarar erros. Registre as informações do erro
                em logs ou ou relance a exceção.