Exception handling (programming): Difference between revisions

Content deleted Content added
No edit summary
Tags: Mobile edit Mobile app edit iOS app edit App section source
No edit summary
Tags: Mobile edit Mobile app edit iOS app edit App section source
Line 183:
* Scalability: In a hierarchical design, each systems may have several subsystems. Each subsystem may throw several exceptions. Each parent system must deal with the exceptions of all subsystems below it, resulting in an exponential number of exceptions to be dealt with. Checked exceptions require all of these exceptions to be dealt with explicitly.
 
To work around these, Hejlsberg says programmers resort to circumventing the feature by using a {{C++|throws Exception}} declaration. Another circumvention is to use a {{C++|try { ... } catch (Exception e) {<nowiki>}</nowiki>}} handler.<ref name=Trouble/> This is referred to as catch-all exception handling or '''Pokémon exception handling''' after [[Pokémon|the show]]'s catchphrase "Gotta Catch ‘Em All!".<ref>{{cite book |last1=Juneau |first1=Josh |title=Java 9 Recipes: A Problem-Solution Approach |date=31 May 2017 |publisher=Apress |isbn=978-1-4842-1976-8 |page=226 |url=https://books.google.com/books?id=TSYmDwAAQBAJ&pg=PA226 |language=en}}</ref> The Java Tutorials discourage catch-all exception handling as it may catch exceptions "for which the handler was not intended".<ref>{{cite web |url=http://download.oracle.com/javase/tutorial/essential/exceptions/advantages.html |title=Advantages of Exceptions (The Java™ Tutorials : Essential Classes : Exceptions) |publisher=Download.oracle.com |access-date=2011-12-15 |url-status=live |archive-url=https://web.archive.org/web/20111026121217/http://download.oracle.com/javase/tutorial/essential/exceptions/advantages.html |archive-date=2011-10-26 }}</ref> Still another discouraged circumvention is to make all exceptions subclass {{C++|RuntimeException}}.<ref>{{cite web|url=http://download.oracle.com/javase/tutorial/essential/exceptions/runtime.html|title=Unchecked Exceptions – The Controversy (The Java™ Tutorials : Essential Classes : Exceptions)|publisher=Download.oracle.com|archive-url=https://web.archive.org/web/20111117042228/http://download.oracle.com/javase/tutorial/essential/exceptions/runtime.html|archive-date=2011-11-17|url-status=live|access-date=2011-12-15}}</ref>, thus making the exception unchecked. An encouraged solution is to use a catch-all handler or throws clause but with a specific [[superclass (computer science)|superclass]] of all potentially thrown exceptions rather than the general superclass {{C++|Exception}}. Another encouraged solution is to define and declare exception types that are suitable for the level of abstraction of the called method<ref>Bloch 2001:178 {{cite book | last = Bloch | first = Joshua | year = 2001 | title = Effective Java Programming Language Guide | publisher = Addison-Wesley Professional | isbn = 978-0-201-31005-4 | url-access = registration | url = https://archive.org/details/effectivejavapro00bloc }}</ref> and map lower level exceptions to these types by using [[exception chaining]].
 
=== Similar mechanisms ===