530 likes | 655 Views
Week 7 : Debugging and Error Handling. Debugging methods available in the ID Error-handling techniques available in C#. Week 7: Debugging and Error Handling. Debugging methods available in the ID. DEBUGGING IN VS AND VCE.
E N D
Week 7: Debugging and Error Handling Debugging methods available in the ID Error-handling techniques available in C#
Week 7: Debugging and Error Handling Debugging methods available in the ID
DEBUGGING IN VS AND VCE Both VS and VCE(express) allow you to build applications in two configurations: Debug (the default) and Release. Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 3
DEBUGGING IN VS AND VCE • In debug configuration and execute it in debug mode, more is going on than the execution of your code. Debug builds maintain symbolic information about your application, so that the IDE knows exactly what is happening as each line of code is executed • In release configuration, application code is optimized. However, release builds also run faster; and when you have finished developing an application, you will typically supply users with release builds because they won’t require the symbolic information thatdebug builds include Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 4
Outputting Debugging Information • First, an additional using directive appears at the beginning of the code: • using System.Diagnostics; • Then • Debug.WriteLine() • Trace.WriteLine() • System.Diagnostics.Debug.WriteLine("Bananas"); Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 5
Debug Menu and Toolbar Breakpoints Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 6
Breakpoints Toggle Breakpoints On/Off by clicking in Editor's gray left margin indicator Breakpoints Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 7
Debugging in Break Mode Breakpoints Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 8
Monitoring Variable Content Monitoring variable content is just one example of how VS and VCE help you a great deal by simplifying things. The easiest way to check the value of a variable is to hover the mouse over its name in the source code while in break mode. A yellow tooltip showing information about the variable appears, including the variable’s current value. Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 9
Viewing Current Values During Program Execution Place mouse pointer over variable or property to view current value Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 10
Monitoring Variable Content Autos (VS only): Variables in use in the current and previous statements (Ctrl+D, A) Locals: All variables in scope (Ctrl+D, L) Watch N: Customizable variable and expression display (where N is 1 to 4, found on Debug WindowsWatch) Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 11
Locals window Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 12
The Watch window Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 13
Immediate and CommandWindows The Command (VS only) and Immediate windows (found on the DebugWindows menu) enable you to execute commands while an application is running. The Command window enables you to perform VS operations manually (such as menu and toolbar operations). The Immediate window enables youto execute additional code besides the source code lines being executed, and to evaluate expressions. Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 14
Immediate and CommandWindows Windows Programming 1 Chapter 7: Debugging and Error Handling Slide 15
Week 7: Debugging and Error Handling Error-handling techniques available in C#
UNDERSTANDING EXCEPTIONS • An exception occurs when a program encounters any unexpected problems. • Your program should be able to handle these exceptional situations and, if possible, gracefully recover from them. This is called exception handling.
UNDERSTANDING EXCEPTIONS • The FCL provides two categories of exceptions • ApplicationException Represents exceptions thrown by the applications • SystemExceptionRepresents exceptions thrown by the CLR
Try Block - General Form • The tryBlock Try { statements that may cause error } catch [ExceptionTypeVariableName ] { statements for action when an exception occurs }
HANDLING EXCEPTIONS • The catchBlock FormatException DivideByZeroException ArithmeticException OverflowException
HANDLING EXCEPTIONS • The throwStatement
HANDLING EXCEPTIONS • The finallyBlock: contains code that always executes, whether or not any exception occurs.
VALIDATING USER INPUT • Field-Level Validation • 1. Enter (Occurs when a control is entered.) • 2. GotFocus (Occurs when a control receives focus.) • 3. Leave (Occurs when focus leaves a control.) • 4. Validating (Occurs when a control is validating.) • 5. Validated (Occurs when a control is finished validating.) • 6. LostFocus (Occurs when a control looses focus.)
The Validating Event • Inside the Validating event, you can write code to do the following: • Programmatically correct any errors or omissions made by the user. • Show error messages and alerts to the user so that the user can fix the problem • Use the Focus() method of the control to transfer the focus back to the field. • Set the Cancel property of CancelEventArgs to true. This cancels the Validating event, leaving the focus in the control.
VALIDATING USER INPUT • 1. KeyDown • 2. KeyPress • 3. KeyUp • The KeyPress event happens after the KeyDown event but before the KeyUp event • KeyPress event match keys include any alphabetic and numeric characters (alphanumeric a–z, A–Z, and 0–9), not raise this event include Ctrl, Alt, and the function keys
VALIDATING USER INPUT EXAM • private void textBoxAge_KeyPress(object sender, KeyPressEventArgs e) • { • if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8) • e.Handled = true; • } • private void textBox1_KeyUp(object sender, • System.Windows.Forms.KeyEventArgs e) • { • if (e.Alt == true) • MessageBox.Show("The ALT key is still down"); • }
The CausesValidation Property • The default value of the CausesValidation property for a control is true for all controls • When you want a control to respond, regardless of the validation status of other controls, you should set the CausesValidation property of that control to false
The ErrorProvider Component • The ErrorProvidercomponent can set a small icon next to a field when it contains an error • When the user moves the mouse pointer over the icon, an error message pops up as a ToolTip
Using the ErrorProvider Component andOther Validation Techniques
The Validating Event and Sticky Form • The CausesValidation property of the btnExit control to false. • Declare the following variable outside a method block in the class: private bool closingFlag = false; • Add the following code to the Click event handler of the Exit button:
The Validating Event and Sticky Form • Attach the following event handling code to the Validating events of both the txtMilecontrols
Math Class Methods • The Mathclass • Allows the user to perform common math calculations • Using methods • ClassName.MethodName( argument1, arument2, … ) • Constants • Math.PI = 3.1415926535… • Math.E = 2.7182818285…
Method Definitions • Writing a custom method • Header ReturnTypeProperties Name( Param1, Param2, …) • Body • Contains the code of what the method does • Contains the return value if necessary • For uses call elsewhere in program • Pass parameters if needed • All methods must be defined inside of a class
Method Definitions • public void MethodName ( ) • { • // Contains the code of what the method does • } • public ReturnType methodName(Param1, Param2, … ) • { • //Contains the code of what the method does • //Contains the return value • }
User-defined method Maximum public double Maximum( double x, double y, double z ) { double maximumValue = x; if ( y > maximumValue ) maximumValue = y; if ( z > maximumValue ) maximumValue = z; return maximumValue; } // end method Maximum
User-defined method Maximum public void DetermineMaximum() {Console.WriteLine( "Enter three floating-point values,\n" + " pressing 'Enter' after each one: " ); double number1 = Convert.ToDouble( Console.ReadLine() ); double number2 = Convert.ToDouble( Console.ReadLine() ); double number3 = Convert.ToDouble( Console.ReadLine() ); double result = Maximum( number1, number2, number3 ); Console.WriteLine( "Maximum is: " + result ); }
Argument Promotion • Implicit Conversion • Object is converted to a needed type implicitly • Only done if complier knows no data will be lost • Explicit Conversion • Object is manually converted • Required if there could be a loss of data • Widening • Make an object that of a derived class and more complex • Narrowing • Make an object that of a base class and cause some data loss
Passing Arguments: Call-By-Value vs. Call-By-Reference • Passing by value • Send a method a copy of the object • When returned are always returned by value • Set by value by default • Passing by reference • Send a method the actual reference point • Causes the variable to be changed throughout the program • When returned are always returned by reference • The refkeyword specifies by reference • The outkeyword means a called method will initialize it
Reference and value parameters void Square( int x ) { x = x * x; } int z=5; Square ( z ); Value of z after Square: 5 void SquareRef( ref int x ) { x = x * x; } int z=5; SquareRef (ref z ); Value of z after SquareRef: 25 void SquareOut( out int x ) { x=5; x = x * x; } int z; SquareOut (out z ); Value of z after SquareOut: 25