Tratamento de exceção: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
m ajustes gerais nas citações, outros ajustes usando script
m Resgatando 4 fontes e marcando 1 como inativas. #IABot (v2.0beta15)
Linha 66:
 
==Exceções verificadas==
Os projetistas da [[linguagem Java]] desenvolveram um conjunto especial de exceções<ref>{{citar web|url=http://archives.java.sun.com/cgi-bin/wa?A2=ind9901&L=rmi-users&F=P&P=36083|titulo=A mailing list for discussion of JavaSoft's Remote Method Invocation|autor=Ann Wollrath|lingua=inglês|acessodata=12 de julho de 2007}}{{Ligação inativa|1={{subst:DATA}} }}</ref><ref>{{citar web|url=http://answers.google.com/answers/threadview?id=26101|titulo=The origin of checked exceptions|lingua=inglês|acessodata=12 de julho de 2007}}</ref><ref>{{citar web|url=http://radio.weblogs.com/0122027/stories/2003/04/01/JavasCheckedExceptionsWereAMistake.html|titulo=Java's checked exceptions were a mistake (and here's what I would like to do about it)|autor=Rod Waldhoff|lingua=inglês|acessodata=12 de julho de 2007|arquivourl=https://web.archive.org/web/20081014095818/http://radio.weblogs.com/0122027/stories/2003/04/01/JavasCheckedExceptionsWereAMistake.html|arquivodata=2008-10-14|urlmorta=yes}}</ref>: as '''exceções verificadas''' ('''''checked exceptions''''').<ref>{{citar web|url=http://java.sun.com/docs/books/jls/third_edition/html/exceptions.html#11.2|titulo=Java Language Specification, chapter 11.2.|autor=Sun Microsystems|lingua=inglês|acessodata=12 de julho de 2007}}</ref> As exceções verificadas que um método pode lançar devem fazer parte da sua assinatura. Por exemplo, se um método pode lançar a exceção <code>IOException</code>, ele precisa declarar este fato na sua assinatura, senão um erro em [[tempo de compilação]] é assinalado.
 
Este mecanismo é relacionado com os verificadores de exceção que existem no [[OCaml]] (uma implementação da linguagem [[Caml]]). A ferramenta externa para o OCaml é transparente (não requer qualquer anotação sintática) e facultativa (é possível compilar e executar uma aplicação sem verificar as exceções, apesar disto não ser recomendável para código utilizado em produção).
 
A linguagem de programação [[CLU (linguagem de programação)|CLU]] possui uma funcionalidade com interface próxima ao que foi introduzido posteriormente pela linguagem Java. Uma função pode lançar apenas as exceções listadas no seu tipo, mas qualquer exceção não listada, lançada quando da chamada de uma função, pode ser automaticamente transformada em uma exceção de [[tempo de execução]] (''runtime''), ou falha, ao invés de resultar em um erro em tempo de compilação. Mais tarde, a linguagem [[Modula-3]] incorporou uma funcionalidade similar.<ref>{{citar web|url=http://www1.cs.columbia.edu/graphics/modula3/tutorial/www/m3_23.html#SEC23|titulo=Modula 3 - Writing Programs|autor=Blair MacIntyre|lingua=inglês|acessodata=12 de julho de 2007}}</ref> Estas funcionalidades não incluem a verificação em tempo de compilação, que é central ao conceito de exceções verificadas e que, até o ano de [[2006]], não haviam sido incorporadas nas principais linguagens de programação, com exceção da linguagem Java.<ref>{{citar web|url=http://www.mindview.net/Etc/Discussions/CheckedExceptions|titulo=Does Java need Checked Exceptions?|autor=Bruce Eckel|lingua=inglês|acessodata=12 de julho de 2007|arquivourl=https://web.archive.org/web/20020405175011/http://www.mindview.net/Etc/Discussions/CheckedExceptions|arquivodata=2002-04-05|urlmorta=yes}}</ref>
 
=== Prós e contras ===
Linha 113:
* {{en}} [http://codeproject.com/dotnet/ExceptionHandling.asp User Friendly Exception Handling]
* {{en}} [http://www.on-time.com/ddj0011.htm Exception Handling in C without C++] por Tom Schotland and Peter Petersen
* {{en}} [https://web.archive.org/web/20051125071334/http://www.gamedev.net/reference/programming/features/sehbasics/ Structured Exception Handling Basics] por Vadim Kokielov
* {{en}} [http://www.informatik.uni-hamburg.de/TGI/pnbib/f/faustmann_g1.html Exception Handling in Petri-Net-based Workflow Management] por Gert Faustmann and Dietmar Wikarski
* {{en}} [http://www.ssw.uni-linz.ac.at/Research/Papers/Hof97b.html Zero-Overhead Exception Handling Using Metaprogramming]
Linha 121:
* {{en}} [http://www.microsoft.com/msj/0197/exception/exception.aspx A Crash Course on the Depths of Win32 Structured Exception Handling] por Matt Pietrek - Microsoft Systems Journal (1997)
* {{en}} [http://artima.com/intv/handcuffsP.html The Trouble with Checked Exceptions] - uma conversa com Anders Hejlsberg
* {{en}} [https://web.archive.org/web/20020405175011/http://www.mindview.net/Etc/Discussions/CheckedExceptions Does Java Need Checked Exceptions?]
* {{en}} [http://neil.fraser.name/writing/exception/ Problems and Benefits of Exception Handling]
* {{en}} [http://www.digitalmars.com/d/exception-safe.html Exception Safe Programming] na linguagem de programação D