Fiquei na dúvida mais na questão conceitual sobre lançar um erro e tratar um erro e queria confirmar a diferença entre ela.
Quando lançamos um erro, não atribuímos um nome de referência para o tipo dele por que não queremos acessar as propriedades que a classe Exception nos fornece.
Tratar um erro é quando atribuímos um nome de referência para o tipo do erro para trabalhar com as propriedades que a classe Exception nos fornece.
Aproveitando, qual a diferença de tratar o erro onde ele é lançado e tratar ele no método que está na base da callstack?