try..except..finally vs. try..catch..finally

Isso é possível no C#:

try
{
  ...
}
catch
{
  ...
}
finally
{
  ...
}

No Delphi, eu preciso de dois blocos try. Um para o except e outro para o finally:

try
  try
    ...
  except
    ...
  end;
finally
  ...
end;

Taí uma coisa simples que seria muito legal se fosse suportado no Delphi. Ficaria mais simples:

try
  ...
except
  ...
finally
  ...
end;

7 Comments

  • Junior Thurler
    31/8/2005 - 11:42 | Permalink

    Erick,

    esse seu comentario foi ate uma pergunta feita ao pai do C# (Anders) pelo Mauro a anos atras, o porque de try catch finally, quando na verdade tinha que ser blocos independentes e aninhados, como no Delphao velho de guerra… Eu sempre concordei com ele, acho que as coisas tem que ter um minimo de organizacao na mente do programador que esta fazendo o sistema, nao acha ? Isso do C# é simplesmente uma maneira de ajudar as pessoas de VB que nao sabem o que é organizacao e orientação a objetos quando tivessem o bom senso de migrar pra uma linguagem decente !!! (hahaha!)

    []s

    JR

  • Erick
    31/8/2005 - 14:44 | Permalink

    Junior,

    Eu não concordo não, acho que tem tudo a ver os dois blocos juntos, pois normalmente quando ocorre algum erro, vc tem que garantir que recursos sejam liberados, objetos destruidos (principalmente em ambiente win32) e coisas do tipo.

    Pra mim, try..catch..finally é bem mais prático.

  • Marco
    19/8/2008 - 17:05 | Permalink

    Junior,

    Descordo do seu comentário, pois esta estrutura para o try..catch já vinha do C++ que é uma linguagem mais antiga e muito mais poderosa do que o Object Pascal do Delphi.

    O C# assim como o Java herdaram esta estrutura do C++, o ObjectPascal embora seja uma linguagem muito boa peca em alguns conceitos de orientação a objeto, por exemplo não implementa polimorfismo paramétrico, que tanto o C++, como o Java e o C# implementam.

    É somente uma questão de sintaxe o Delphi não é melhor ou pior por isso, embora pessoalmente eu acho se ficasse no mesmo bloco seria mais simples de entender.

  • 20/8/2008 - 14:07 | Permalink

    Marco, no Delphi você pode fazer sobrecarga de métodos virtuais e assim implementar “polimormismo paramétrico”, como você diz. A propósito, sobrecarga de métodos é muito mais um recurso de casting do que algo específico de orientação a objetos.

  • RJR
    5/5/2009 - 16:37 | Permalink

    Sr. Junior Thurle

    Não entendi o porque que a instrucao C# nao é aninhado?
    Por que mais aninhado e simples que try catch finally ?
    Mais simples que try try except finally!

    Desenvolvo em C e Delphi, e pode ter certeza que no dia a dia o entendimento de try catch finally é melhor, alem do tempo da digitação e alinhamento bem menor que try try except finally!

  • YANKEE
    30/9/2009 - 17:58 | Permalink

    Ao colega de trabalho Junior Thurler

    Apesar de os dois cumprirem a mesma finalidade proposta que é o que realmente vale a pena soh uma dica vale a pena ficar atendo também as propostas das novidades em tecnologia e desenvolvimento, ferramentas e linguagens, procurar saber o que as comunidades de desenvolvimento estão usando, quanto a isso acredito que não vale a pena resistir somente em uma linguagem, Delphi, que não é o que as melhores empresas as que $$ mais estão a procura. Também comecei com Delphi, mas não se prenda. Não me entenda mal, sucesso!

  • guztavo
    16/12/2011 - 13:59 | Permalink

    concordo com o Erick, porem uso o Delphi e tenho que escrever as linhas em dois blocos.

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>