0% found this document useful (0 votes)
17 views

Chapter Eight: Exception Handling

This chapter discusses exception handling in C#. It covers generating exceptions, using try/catch blocks to handle exceptions, catching multiple exceptions, using the finally block, throwing custom exceptions, and tracing exceptions through the call stack. The key aspects of exception handling in an object-oriented way are to try code that may cause errors, catch any thrown exceptions, and throw custom exceptions for conditions you want callers to handle.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

Chapter Eight: Exception Handling

This chapter discusses exception handling in C#. It covers generating exceptions, using try/catch blocks to handle exceptions, catching multiple exceptions, using the finally block, throwing custom exceptions, and tracing exceptions through the call stack. The key aspects of exception handling in an object-oriented way are to try code that may cause errors, catch any thrown exceptions, and throw custom exceptions for conditions you want callers to handle.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 38

Chapter Eight

Exception Handling

1
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

2
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

3
Objectives

• How to throw an Exception


• How to trace Exceptions through the call stack
• How to create your own Exception classes

4
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

5
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

6
Common Language Runtime
• The Common Language Runtime (CLR),
the virtual machine component of
Microsoft's .NET framework, manages the
execution of .NET programs. A process
known as just-in-time compilation converts
compiled code into machine instructions
which the computer's CPU then executes

7
8
Purposely Generating a SystemException

• You can deliberately generate a SystemException


exception by forcing a program to contain an error

9
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

10
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

11
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

12
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

13
Understanding Object-Oriented Exception-
Handling Methods

• General form of a try…catch pair


14
15
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

16
Using the Exception Class’s ToString()
Method and Message Field

• Output of UsingTheException program when user enters 0 for second number

17
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

18
Catching Multiple Exceptions

• TwoErrors class with two catch blocks


19
Catching Multiple Exceptions

• Output of TwoErrors program


20
Catching Multiple Exceptions

• If you reverse the two try statements within the


TwoErrors class, the output of the program changes

21
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

22
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

23
Catching Multiple Exceptions

• Program with unreachable catch block


24
Catching Multiple Exceptions

• Error message generated by UnreachableCatch program

25
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

26
Using the finally Block

• General form of a try…catch block with a finally block

27
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

28
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)

29
Throwing Exceptions

• Two executions of TrySoccerPlayer1 program

30
•Next Skip

31
Throwing Exceptions

• Execution of TrySoccerPlayer2 program


32
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

33
Tracing Exceptions Through the Call Stack

• The StackTrace field can be a useful debugging tool

34
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

35
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

36
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

37
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

38

You might also like