The purpose of this category is to facilitate finding information about the use of Exceptions for ErrorHandling and other purposes. Pages in this category have been hierarchically organized below to make it easier to find pages relevant to particular interests. Note that there are somewhat different categorizations on the pages ExceptionPatterns and ExceptionHandling. Click the title to get a list of all pages in this category. Use http://c2.com/cgi/wiki?search=Exception to search for pages with "Exception" in their titles Use http://c2.com/cgi/wiki?search=Catch to search for pages with "Catch" in their titles Use http://c2.com/cgi/wiki?search=Throw to search for pages with "Throw" in their titles If pages you find by searching should belong to this category, please mark them with CategoryException. ---- * Arguments for Exceptions ** ExceptionsAreOurFriends ** UseExceptionsInsteadOfErrorValues ---- * Enhancements on Exceptions ** ResumableException ** CommonLispConditionSystem ---- * Arguments against Exceptions ** AvoidExceptionsWheneverPossible ** CodeWithoutExceptions ** http://www.joelonsoftware.com/items/2003/10/13.html ** http://blogs.msdn.com/oldnewthing/archive/2005/01/14/352949.aspx ** http://www.joelonsoftware.com/articles/Wrong.html ---- * Alternatives to Exceptions ** ArrowAntiPattern ** BottomType / BottomPropagation ** DeferredExceptionObject ** ErrorValue (but see UseExceptionsInsteadOfErrorValues) ** ExceptionHandlingChallenge ** ExceptionReporter ** ExceptionalValue ** InvisibleExceptionHandlers ** NilFalseExceptionsFailure ** NullObject ** PassAnErrorHandler ** RefactorExtractExceptionHandlingToAspect ** TestInAdvance ** TransactionsVsExceptions ** YouDontWantAnExceptionYouWantaTimeMachine ** YouDontWantAnExceptionYouWantaTransaction ---- * Exception AntiPattern''''''s ** ExceptionFunnel ** ExceptionsMaskRealProblems ------------------- * Exception Patterns ** What (and what not) to use exceptions for *** DesigningWithExceptions *** DontUseExceptionsForFlowControl *** DoOrDie *** ExceptionalConditions *** ExceptionsAsConstraints *** SamuraiPrinciple *** WithYourShieldOrOnIt ** What types of exceptions to use, when *** AvoidImplementationSpecificExceptions *** ClassifyingExceptions *** ConvertExceptions *** DontRefineExceptions / GeneralizeOnExceptionBehavior *** DontThrowGenericExceptions *** ExceptionHierarchy *** ExceptionPerContext *** HomogenizeExceptions *** MaskExceptionsAppropriately *** NestedException *** NameTheProblemNotTheThrower *** RefineExceptions / RefinedExceptions *** UncheckedException ** When / where to throw and catch exceptions (WhenToCatchExceptions / ExceptionRecovery) *** CatchExceptionsInLoops *** EmptyCatchClause *** ExceptionsIndicateBugs (MisnamedPage) *** DontCatchExceptions *** ExceptionHandlingNearMainline *** HandleErrorsInContext *** AbortRetryIgnore *** HandlingExceptionsAsEarlyAsPossible *** LetExceptionsPropagate *** ReplaceEmptyCatchWithTest *** SeparateThrowAndCatch *** ThrowDontCatch ** Using exceptions in thread handling *** CancelThreadsWithAnException *** ExceptionsTidyThreads ** Using exceptions with the ObserverPattern *** ObserversAndExceptions *** ObserversShouldNeverThrowExceptions *** ObserversThrowLocalExceptions ** Other exception patterns *** ExceptionsCancelTransactions / ExceptionsCancelOperations *** ExceptionGuarantee *** ExceptionLogging *** ExceptionPackage *** TidyUpBeforeThrowing *** ThrowYourOwnException *** UseIdenticalExceptionHandlers *** UsingSpecificExceptionTypes ---- * Language-specific advice ** Exceptions in C++ *** BewareOfExceptionsInTheDestructor *** DontDeclareThrownExceptions *** ExceptionsInJavaAreDifferentThanInCeePlusPlus *** ExceptionsAndConstructors ** Exceptions in Java (JavaExceptionHandling) *** CatchDontCheck *** CatchDontCheckRefuted *** ChainedExceptions *** CheckDontCatch *** CheckedException *** CheckedExceptionPatterns *** CheckedExceptionsAreOfDubiousValue *** ClassCastException *** DeclareThrowsExceptionByDefault *** DontCatchRuntimeExceptions *** ExceptionAdapter *** ExceptionsInJavaAreDifferentThanInCeePlusPlus *** ExceptionTunneling *** IllegalArgumentException *** IllegalStateException *** InterruptedException *** JavaExceptionQuestion *** JavaExceptionsAreFirstClassObjects *** JavaExceptionsAreParticularlyEvil *** JavaExceptionsShouldBeInterfaces *** LetExceptionsPropagateOnlyAsUncheckedExceptions *** MessyExceptionHierarchy *** NullPointerException *** RefactorExceptionHandlers *** ThrowsException *** ThrowsExceptionByDefault *** ThrowsExceptionDeclarationDoesNotConsiderInheritance *** TranslateExceptions *** UnhandledException ** Exceptions on Microsoft platforms *** StructuredExceptionHandling ** Exceptions in Perl (ExceptionHandlingInPerl) ** Exceptions in Smalltalk (SmalltalkAndExceptions) ---- Organized this page 6/11/2005 -- AarreLaakso ''(Nice job! I like the organization of this page. Thanks! -- JeffGrigg)'' Kudos! One suggestion I wish to float is to reduce the bullet level by one. Section headings don't really need to be bulleted. ---- CategoryCategory | CategoryException