1 / 34

Chapter Eight

Chapter Eight. Exception Handling. Objectives. Learn about exceptions and the Exception class How to purposely generate a SystemException Learn about traditional error-handling methods Learn about object-oriented exception-handling methods. Objectives.

mcoffin
Download Presentation

Chapter Eight

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter Eight Exception Handling

  2. Objectives • Learn about exceptions and the Exception class • How to purposely generate a SystemException • Learn about traditional error-handling methods • Learn about object-oriented exception-handling methods

  3. Objectives • How to use the Exception class’s ToString() method and Message field • How to catch multiple Exceptions • How to use the finally block • How to handle an Exception with a loop

  4. Objectives • How to throw an Exception • How to trace Exceptions through the call stack • How to create your own Exception classes

  5. Understanding Exceptions • An exception is any error condition or unexpected behavior in an executing program • Certain errors are called exceptions because they are not usual occurrences • The object-oriented technique used to manage exceptions make up the group of methods known as exception handling • In C#, all exceptions are objects

  6. Understanding Exceptions • Most exceptions you will use derive from two classes that in turn derive from the Exception class • The predefined Common Language Runtime exception classes derived from SystemException • The user-defined application exception classes you derive from ApplicationException

  7. Purposely Generating a SystemException • You can deliberately generate a SystemException exception by forcing a program to contain an error

  8. Purposely Generating a SystemException • The DivideByZeroException object below was generated automatically by C# • Just because an Exception occurs when an Exception object is created, you don’t necessarily have to deal with it

  9. Understanding Object-Oriented Exception-Handling Methods • In object-oriented terminology, you “try” a procedure that may not complete correctly • A method that detects an error condition or Exception “throws” an Exception • The block of code that processes the error “catches” the Exception

  10. Understanding Object-Oriented Exception-Handling Methods • When you write a block of code in which something can go wrong, you can place the code in a try block, consisting of: • The keyword try • An opening curly brace • Statements that might cause Exceptions • A closing curly brace

  11. Understanding Object-Oriented Exception-Handling Methods • You create a catch block with the following elements: • The keyword catch, followed by an opening parenthesis, the Exception type, a name for an instance of the Exception type, and a closing parenthesis • An opening curly brace • Statements that take the action you want to use to deal with the error condition • A closing curly brace

  12. Understanding Object-Oriented Exception-Handling Methods • General form of a try…catch pair

  13. Using the Exception Class’s ToString() Method and Message Field • Any Exception generated from within a try block would be caught by a catch block whose argument is an Exception type (e.g., Exception e); there is no way to confirm the origin of the Exception • You can use the ToString() method to provide a descriptive error message • The Exception class also contains a field named Message that contains useful information about an Exception

  14. Using the Exception Class’s ToString() Method and Message Field • Output of UsingTheException program when user enters 0 for second number

  15. Catching Multiple Exceptions • You can place as many statements as you need within a try block, and you can catch as many different Exceptions as you want • If you place more than one statement in a try block, only the first error-generating statement throws an Exception • When multiple catch blocks are present, they are examined in sequence until a match is found for the Exception that occurred

  16. Catching Multiple Exceptions • TwoErrors class with two catch blocks

  17. Catching Multiple Exceptions • Output of TwoErrors program

  18. Catching Multiple Exceptions • If you reverse the two try statements within the TwoErrors class, the output of the program changes

  19. Catching Multiple Exceptions • When you want to execute the same code, no matter what type of Exception occurs, you can use only one catch block, which receives type Exception

  20. Catching Multiple Exceptions • The Exception class is the base class for all Exception objects and therefore can reference all Exception descendants • The catch block in the previous code accepts all Exception argument types • When you list multiple catch blocks following a try, you must be careful that some catch blocks don’t become unreachable

  21. Catching Multiple Exceptions • Program with unreachable catch block

  22. Catching Multiple Exceptions • Error message generated by UnreachableCatch program

  23. Using the finally Block • The code within a finally block executes whether or not the try block identifies an Exception • Typically, the finally block is used to perform clean-up tasks • When you include a finally block, you are assured that the finally statements will execute before the program is abandoned

  24. Using the finally Block • General form of a try…catch block with a finally block

  25. Handling an Exception with a Loop • Different programs require different ways of handling Exceptions • In some cases, the try-catch sequence could be placed in a loop that continues to execute until the code is successful

  26. Throwing Exceptions • An advantage of using object-oriented exception-handling techniques is the ability to deal with Exceptions appropriately as you make conscious decisions about how to handle them • When methods from other classes throw Exceptions, they don’t have to catch them • When you design your own classes that might cause Exceptions, you should create them to throw the Exception but not to handle it • Handling an Exception should be left to the client (the program that uses the class)

  27. Throwing Exceptions • Two executions of TrySoccerPlayer1 program

  28. Throwing Exceptions • Execution of TrySoccerPlayer2 program

  29. Tracing Exceptions Through the Call Stack • The memory location where the computer stores the list of locations to which the system must return (after method calls) is known as the call stack • When a method throws an Exception, if the method does not catch it, then the Exception is thrown to the next method “up” the call stack • You can print the value of the StackTrace field to display a list of methods in the call stack so you can determine the location of the Exception

  30. Tracing Exceptions Through the Call Stack • The StackTrace field can be a useful debugging tool

  31. Creating Your Own Exception Classes • You can create your own customized Exception class for your application • To create your own Exception that you can throw, you should extend the ApplicationException class • You should not create an excessive number of special Exception types for your class because it adds a level of complexity to your program

  32. Chapter Summary • An exception is any error condition or unexpected behavior in an executing program • You can purposely generate a SystemException exception by forcing a program to contain an error • When you think an error will occur frequently, it is most efficient to handle it in the traditional way, with if statements • In object-oriented terminology, you “try” a procedure that may not complete correctly

  33. Chapter Summary • Every Exception object contains a ToString() method and a Message field • You can place as many statements as you need within a try block, and you can catch as many different Exceptions as you want • When you have actions to perform at the end of a try…catch sequence, you can use a finally block • When you want to keep trying a block of code until some value or state within a program is correct, you can place a try…catch block within a loop

  34. Chapter Summary • When methods throw Exceptions, they don’t have to catch them; instead, the program that calls a method that throws an Exception can catch it and determine what to do • When a method throws an Exception, if the method does not catch it, then the Exception is thrown to the method that called the offending method • To create your own Exception that you can throw, you should extend the ApplicationException class

More Related