Debugging and Handling Exceptions

Slides:



Advertisements
Similar presentations
Error-handling using exceptions
Advertisements

Topics Introduction Types of Errors Exceptions Exception Handling
COMPUTER PROGRAMMING I Essential Standard 5.02 Understand Breakpoint, Watch Window, and Try And Catch to Find Errors.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 15: Exception Handling.
Try…Catch…Finally Blocks ( continued ) Generic catch clause –Omit argument list with the catch –Any exception thrown is handled by executing code within.
C# Programming: From Problem Analysis to Program Design1 Debugging and Handling Exceptions C# Programming: From Problem Analysis to Program Design 3 rd.
Chapter 16: Exception Handling C++ Programming: From Problem Analysis to Program Design, Fifth Edition.
Objectives In this chapter you will: Learn what an exception is Learn how to handle exceptions within a program See how a try / catch block is used to.
Chapter 11 Debugging and Handling Exceptions
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 16: Exception Handling.
Slides prepared by Rose Williams, Binghamton University ICS201 Exception Handling University of Hail College of Computer Science and Engineering Department.
Exceptions Briana B. Morrison CSE 1302C Spring 2010.
Microsoft VB 2005: Reloaded, Advanced Chapter 5 Input Validation, Error Handling, and Exception Handling.
Debugging Techniques1. 2 Introduction Bugs How to debug Using of debugger provided by the IDE Exception Handling Techniques.
The IDE (Integrated Development Environment) provides a DEBUGGER for locating and correcting errors in program logic (logic errors not syntax errors) The.
Exception Handling An Exception is an indication of a problem that occurs during a program’s execution. Exception handling enables the programmer to create.
Finding and Debugging Errors
Java Review 2 – Errors, Exceptions, Debugging Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Chapter 12: Advanced Topics: Exception Handling Visual Basic.NET Programming: From Problem Analysis to Program Design.
JavaScript, Fourth Edition
1 Chapter Eight Exception Handling. 2 Objectives Learn about exceptions and the Exception class How to purposely generate a SystemException Learn about.
ASP.NET Programming with C# and SQL Server First Edition Chapter 6 Debugging and Error Handling.
Chapter 12: Exception Handling
UNIT 3 TEMPLATE AND EXCEPTION HANDLING. Introduction  Program errors are also referred to as program bugs.  A C program may have one or more of four.
1 Chapter 9 Writing, Testing, and Debugging Access Applications.
PROGRAMMING IN VISUAL BASIC.NET VISUAL BASIC BUILDING BLOCKS Bilal Munir Mughal 1 Chapter-5.
VB.Net - Exceptions Copyright © Martin Schray
10/20/2015Assoc. Prof. Stoyan Bonev1 COS240 O-O Languages AUBG, COS dept Lecture 37 Title: C# vs. Java Exception Handling Reference: COS240 Syllabus.
Object Oriented Software Development 8. Exceptions, testing and debugging.
Introduction to Exception Handling and Defensive Programming.
Chapter 14: Exception Handling. Objectives In this chapter, you will: – Learn what an exception is – Learn how to handle exceptions within a program –
Exceptions in Java. Exceptions An exception is an object describing an unusual or erroneous situation Exceptions are thrown by a program, and may be caught.
JAVA: An Introduction to Problem Solving & Programming, 5 th Ed. By Walter Savitch and Frank Carrano. ISBN © 2008 Pearson Education, Inc., Upper.
Visual Basic.NET Comprehensive Concepts and Techniques Chapter 8 Debugging, Creating Executable Files, and Distributing a Windows Application.
Chapter 12 Handling Exceptions and Events. Chapter Objectives Learn what an exception is Become aware of the hierarchy of exception classes Learn about.
Exceptions and Assertions Chapter 15 – CSCI 1302.
Chapter 15: Exception Handling C++ Programming: Program Design Including Data Structures, Fifth Edition.
Lecture10 Exception Handling Jaeki Song. Introduction Categories of errors –Compilation error The rules of language have not been followed –Runtime error.
Exception and Exception Handling. Exception An abnormal event that is likely to happen during program is execution Computer could run out of memory Calling.
ECE122 L23: Exceptions December 6, 2007 ECE 122 Engineering Problem Solving with Java Lecture 24 Exceptions.
1 Handling Errors and Exceptions Chapter 6. 2 Objectives You will be able to: 1. Use the try, catch, and finally statements to handle exceptions. 2. Raise.
Lec.11 (Chapter 11) Exception Jiang (Jen) ZHENG July 13 th, 2005.
Chapter 11 – Exception Handling
ME 142 Engineering Computation I
Chapter 10 – Exception Handling
Reference: COS240 Syllabus
Testing and Debugging.
Computer Programming I
Important terms Black-box testing White-box testing Regression testing
Chapter 14: Exception Handling
Debugging and Handling Exceptions
Important terms Black-box testing White-box testing Regression testing
5.01 Understand Different Types of Programming Errors
CNS 3260 C# .NET Software Development
Exception Handling Chapter 9.
Topics Introduction to File Input and Output
Chapter 12 Exception Handling
Exceptions Problems in a Java program may cause exceptions or errors representing unusual or invalid processing. An exception is an object that defines.
Abdulmotaleb El Saddik University of Ottawa
Exception Handling Chapter 9 Edited by JJ.
Part B – Structured Exception Handling
Tonga Institute of Higher Education
Exception Handling Imran Rashid CTO at ManiWeber Technologies.
Lecture 11 Objectives Learn what an exception is.
Errors and Exceptions Error Errors are the wrongs that can make a program to go wrong. An error may produce an incorrect output or may terminate the execution.
Debugging and Handling Exceptions
Topics Introduction to File Input and Output
Chapter 11: Exception Handling
Exception Handling.
Java Programming: From Problem Analysis to Program Design, 4e
Presentation transcript:

Debugging and Handling Exceptions 11 C# Programming: From Problem Analysis to Program Design C# Programming: From Problem Analysis to Program Design

Chapter Objectives Learn about exceptions, including how they are thrown and caught Gain an understanding of the different types of errors that are found in programs Look at debugging methods available in Visual Studio Discover how the Debugger can be used to find run-time errors C# Programming: From Problem Analysis to Program Design

Chapter Objectives (continued) Become aware of and use exception-handling techniques to include try…catch…finally clauses Explore the many exception classes and learn how to write and order multiple catch clauses C# Programming: From Problem Analysis to Program Design

Error message does not always state the correct problem Errors Visual Studio IDE reports errors as soon as it is able to detect a problem Syntax errors Language rule violation Error message does not always state the correct problem Quick info Figure 11-1 Syntax error – extraneous semicolon C# Programming: From Problem Analysis to Program Design

Run-Time Errors Just because your program reports no syntax errors does not necessarily mean it is running correctly One form of run-time error is a logic error Program runs, but produces incorrect results May be off-by-one in a loop Sometime users enter incorrect values Finding the problem can be challenging C# Programming: From Problem Analysis to Program Design

Debugging in C# Desk check Many IDEs have Debuggers Debuggers let you observer the run-time behavior You can break or halt execution You can step through the application You can evaluate variables You can set breakpoints Debug menu offers debugging options C# Programming: From Problem Analysis to Program Design

Debugging in C# (continued) Figure 11-2 Debug menu options C# Programming: From Problem Analysis to Program Design

Debugging in C# (continued) Select Start Debugging and number of options to run your program doubles Figure 11-3 Debug menu options during debugging mode C# Programming: From Problem Analysis to Program Design

Breakpoints Markers placed in an application, indicating the program should halt execution when it reaches that point Break mode Examine expressions Check intermediate results Use Debug menu to set Breakpoint F9 (shortcut) Toggles C# Programming: From Problem Analysis to Program Design

Breakpoints (continued) Red glyph placed on the breakpoint line Figure 11-4 Breakpoint set C# Programming: From Problem Analysis to Program Design

Break Mode In Break mode, Debugger displays Locals window All variables and their values are shown Figure 11-5 Locals window at the breakpoint C# Programming: From Problem Analysis to Program Design

Break Mode (continued) Figure 11-7 Breakpoint location C# Programming: From Problem Analysis to Program Design

Debugging in C# Continue Stepping through code Takes the program out of break mode and restores it to a run-time mode If more than one breakpoint set, Continue causes the program to execute from the halted line until it reaches the next breakpoint Stepping through code Execute code line by line and see the execution path Examine variable and expression values as they change C# Programming: From Problem Analysis to Program Design

Stepping Through Code Step Into (F11) Step Over (F10) Program halts at the first line of code inside the called method Step Over (F10) Executes the entire method called before it halts Step Out (Shift+F11) Causes the rest of the program statements in the method to be executed and then control returns to the method that made the call C# Programming: From Problem Analysis to Program Design

Watches Can set Watch windows during debugging sessions Watch window lets you type in one or more variables or expressions to observe while the program is running Watch window differs from Locals window, which shows all variables currently in scope Quick Watch option on Debug menu lets you type a single variable or expression C# Programming: From Problem Analysis to Program Design

Watches (continued) Figure 11-8 QuickWatch window C# Programming: From Problem Analysis to Program Design

Exceptions Some circumstances are beyond programmer’s control You have assumed nothing unusual would occur Have probably experienced unhandled exceptions being thrown While you browsed Web pages While you were developing applications using C# Unless provisions are made for handling exceptions, your program may crash or produce erroneous results Unhandled exception C# Programming: From Problem Analysis to Program Design

Exceptions (continued) Dialog box asks you whether you want to have an error report sent to Microsoft Figure 11-9 Microsoft error reporting C# Programming: From Problem Analysis to Program Design

Exceptions (continued) Normally you do not want to try to debug application while it is running Click No Figure 11-10 Just-In-Time Debugger C# Programming: From Problem Analysis to Program Design

Unhandled Exception Message displayed when you are creating console application and unhandled exception occurs Figure 11-11 Unhandled exception in a console application C# Programming: From Problem Analysis to Program Design

Unhandled Exception (continued) Selecting Debug>Start to run application in Visual Studio Yellow arrow marks the error (erroneous code highlighted) Figure 11-12 Unhandled exception thrown – dividing by zero C# Programming: From Problem Analysis to Program Design

Raising an Exception Error encountered – no recovery Raise or throw an exception Execution halts in the current method and the Common Language Runtime (CLR) attempts to locate an exception handler Exception handler: block of code to be executed when a certain type of error occurs If no exception handler is found in current method, exception is thrown back to the calling method C# Programming: From Problem Analysis to Program Design

Bugs, Errors, and Exceptions Bugs differ from exceptions Bugs, also called "programmer mistakes," should be caught and fixed before application released Errors can be created because of user actions Example Entering wrong type of data produces unhandled exception when ParseInt( ) called Details button in Visual Studio lists a stack trace of methods with the method that raised the exception listed first C# Programming: From Problem Analysis to Program Design

Bugs, Errors, and Exceptions (continued) Stack trace Figure 11-13 Unhandled exception raised by incorrect input string C# Programming: From Problem Analysis to Program Design

Exception-Handling Techniques If event creates a problem frequently, best to use conditional expressions to catch and fix problem Execution is slowed down when CLR has to halt a method and find an appropriate event handler Exception-handling techniques are for serious errors that occur infrequently Exceptions classes integrated within the FCL Used with the try…catch…finally program constructs C# Programming: From Problem Analysis to Program Design

Try…Catch…Finally Blocks Code that may create a problem is placed in the try block Code to deal with the problem (the exception handler) is placed in catch blocks Catch clause Code to be executed whether an exception is thrown or not is placed in the finally block C# Programming: From Problem Analysis to Program Design

Notice square brackets indicate optional entry { // Statements } catch [ (ExceptionClassName exceptionIdentifier) ] // Exception handler statements : // [additional catch clauses] [ finally } ] Notice square brackets indicate optional entry One catch clause required finally clause optional C# Programming: From Problem Analysis to Program Design

Try…Catch…Finally Blocks (continued) Generic catch clause Omit argument list with the catch Any exception thrown is handled by executing code within that catch block Control is never returned into the try block after an exception is thrown Using a try…catch block can keep the program from terminating abnormally C# Programming: From Problem Analysis to Program Design

Use of Generic Catch Clause Example 11-2 uses a generic catch block Figure 11-14 Generic catch block handles the exception C# Programming: From Problem Analysis to Program Design

What Caused These Exceptions to be Thrown? Never quite sure what causes the exception to be thrown when a generic catch clause is used! Figure 11-15 Exceptions – division by zero and programmer error C# Programming: From Problem Analysis to Program Design

Exception Object When an exception is raised, an object is created Object has properties and behaviors (methods) Catch clause may list an exception class Catch { } without exception type does not give you access to an object Base exception class: Exception Message property returns a string describing exception StackTrace property returns a string that contains the called trace of methods C# Programming: From Problem Analysis to Program Design

Exception Object (continued) catch (System.Exception e) { Console.Error.WriteLine("Problem with scores - " + "Can not compute average"); Console.Error.WriteLine(e.Message); } Figure 11-16 Use of Message property with the exception object C# Programming: From Problem Analysis to Program Design

Exception Classes ApplicationException and SystemException classes form the basis for run-time exceptions C# Programming: From Problem Analysis to Program Design

Exception Classes (continued) ApplicationException Derive from this class when you write your own exception classes User program must throw the exception, not the CLR SystemException Most run-time exceptions derive from this class SystemException class adds no functionality to classes; includes no additional properties or methods C# Programming: From Problem Analysis to Program Design

SystemException Class Over 70 classes derived from SystemException C# Programming: From Problem Analysis to Program Design

SystemException Class (continued) C# Programming: From Problem Analysis to Program Design

System.DivideByZeroException Derived class of System.ArithmeticException class Thrown when an attempt to divide by zero occurs Only thrown for integral or integer data types Floating-point operands do not throw an exception Result reported as either positive infinity, negative infinity, or Not-a-Number (NaN) Follows the rules from IEEE 754 arithmetic C# Programming: From Problem Analysis to Program Design

Filtering Multiple Exceptions Can include multiple catch clauses Enables writing code specific to thrown exception Should be placed from most specific to the most generic If Exception class is included, it should always be placed last C# Programming: From Problem Analysis to Program Design

Custom Exceptions Derive from the ApplicationException class Good idea to use the word “Exception” as part of the identifier Creating an exception class is no different from creating any other class C# Programming: From Problem Analysis to Program Design

Custom Exceptions (continued) public class FloatingPtDivisionException : System.ApplicationException { public FloatingPtDivisionException (string exceptionType) : base (exceptionType) // Empty body } String argument sent to the base constructor indicating type of exception C# Programming: From Problem Analysis to Program Design

User-defined class public class TestOfCustomException { static void Main(string[] args) double value1 = 0, value2=0, answer; try { //Could include code to enter new values. answer = GetResults(value1, value2); } catch (FloatingPtDivisionException excepObj) Console.Error.WriteLine(excepObj.Message); catch Console.Error.WriteLine(“Something else happened!”); User-defined class C# Programming: From Problem Analysis to Program Design

Custom Exceptions (continued) Throwing a programmer-defined exception Exception object is instantiated when "an exceptional condition occurs” Can be any condition, but should be one that happens infrequently After object is instantiated, object is thrown C# Programming: From Problem Analysis to Program Design

static double GetResults (double value1, double value2) { if (value2 < .0000001) // Be careful comparing floating- // point values for equality. FloatingPtDivisionException excepObj = new FloatingPtDivisionException (“Exceptionƒtype: “ + “Floating-point division by zero”); throw excepObj; } return value1 / value2; Throwing an exception C# Programming: From Problem Analysis to Program Design

Input Output (IO) Exceptions System.IO.IOException Direct descendent of Exception Thrown when a specified file or directory is not found Thrown when program attempts to read beyond the end of a file Thrown when there are problems loading or accessing the contents of a file C# Programming: From Problem Analysis to Program Design

Input Output (IO) Exceptions (continued) C# Programming: From Problem Analysis to Program Design

ICW WaterDepth Application Figure 11-21 Problem specification for WaterDepth application C# Programming: From Problem Analysis to Program Design

ICW WaterDepth Application (continued) C# Programming: From Problem Analysis to Program Design

ICW WaterDepth Application (continued) Figure 11-22 Prototype for WaterDepth input form Figure 11-23 Prototype for WaterDepth final output C# Programming: From Problem Analysis to Program Design

ICW WaterDepth Application (continued) Figure 11-24 Class diagrams for WaterDepth application C# Programming: From Problem Analysis to Program Design

ICW WaterDepth Application (continued) Figure 11-29 State exception thrown Figure 11-30 Invalid input exception C# Programming: From Problem Analysis to Program Design

ICW WaterDepth Application (continued) Figure 11-31 Debug information sent to Output window C# Programming: From Problem Analysis to Program Design

Chapter Summary Types of errors Debugger Exceptions Halt execution to examine code Breakpoints Locals window shows variables in scope Step Into, Step Over, and Step Out Exceptions Unexpected conditions Abnormal termination if not handled C# Programming: From Problem Analysis to Program Design

Chapter Summary (continued) Exceptions How to throw and caught exceptions Exception-handling techniques try…catch…finally clauses Exception classes Create custom Exception classes Throw exception Use multiple catch clauses C# Programming: From Problem Analysis to Program Design