Chapter 6 Debugging and error handling

5 362 0
Chapter 6 Debugging and error handling

Đang tải... (xem toàn văn)

Thông tin tài liệu

1 Debugging and Error Handling Chapter 6 Ebook: Beginning Visual C# 2010, chapter 7 Reference: CSharp How to Program, part D Contents  Introduction  DebuggingError Handling Slide 2 Introduction  Errors in program: a program can have three types of errors:  Compile-time errors: The compiler will find syntax errors and other basic problems  Run-time errors: A problem can occur during program execution, such as trying to divide by zero, which causes a program to terminate abnormally  Logical errors: A program may run, but produce incorrect results, perhaps using an incorrect formula 1-3 DebuggingDebugging is the process of finding and correcting logic errors in applications  Applications are executed in two ways: with debugging enabled (F5) or without debugging enabled (Ctrl+F5)  Techniques  Debugging in nonbreak mode  Outputting debugging information: Console.WriteLine(), Debug.WriteLine()  Debugging in break mode  Using Breakpoints  Some windows in Debug\Windows: Autos, Locals, Watch Slide 4 Error Handling  An exception is an indication of a problem that occurs during a program's execution  format error,  arithmetic overflow,  out-of range array subscripts,  division by zero,  invalid method parameters  running out of available memory,  …  Your program should be able to handle these exceptional situations. This is called exception handling Slide 5 Error Handling (cont.) int tu = Convert.ToInt32( txtNumerator.Text ); int mau = Convert.ToInt32( txtDenominator.Text ); int result = tu / mau; lblOutput.Text = result.ToString(); Slide 6 2 Exception Handling: try…catch try{ // code that may cause exception } catch ( ExceptionTypeA e ){ // statement to handle errors occurring // in the associated try block } catch ( ExceptionTypeB e ){ // statement to handle errors occurring // in the associated try block } Slide 7 Exception Handling: try…catch finally try{ // code that may cause exception } catch ( ExceptionTypeA e ){ // statement to handle errors occurring // in the associated try block } //… finally{ // statements always excuted } Slide 8 Exception Types Slide 9  Some common exception classes Exception Class Cause DivideByZeroException An attempt was made to divide by zero. FormatException The format of an argument is wrong. IndexOutOfRangeException An array index is out of bounds. InvalidCastExpression An attempt was made to cast to an invalid class. OutOfMemoryException Not enough memory to continue execution. StackOverflowException A stack has overflown. Example: try…catch private void divideButton_Click( object sender, System.EventArgs e ){ lblOutput.Text = ""; try { int x = Convert.ToInt32( txtX.Text ); int y = Convert.ToInt32( txtY.Text ); int result = x / y; lblOutput.Text = result.ToString(); } catch ( FormatException ) { MessageBox.Show( "You must enter two integers“, "Invalid Number Format", MessageBoxButtons.OK, MessageBoxIcon.Error ); } catch ( DivideByZeroException er ) { MessageBox.Show( er.Message, "Attempted to Divide by Zero", MessageBoxButtons.OK, MessageBoxIcon.Error ); } } Slide 10 The throw statement  A throw statement explicitly generates an exception in code  There are two ways you can use the throw statement  Rethrow the exception in a catch block: catch(Exception e) { // Add code to create an entry in event log throw; }  Throw explicitly created exceptions string strMessage = “EndDate should be greater than the StartDate”; ArgumentOutOfRangeException exp = new ArgumentOutOfRangeException(strMessage); throw exp; Slide 11 .NET Exception hierarchy  The FCL provides two categories of exceptions  ApplicationException : represents exceptions thrown by the applications  SystemException : represents exceptions thrown by the CLR Slide 12 Exception ApplicationException SystemException 3 Programmer-defined Exception classes  Creating customized exception types  Should derive from class ApplicationException  Should end with “Exception”  Should define three constructors  A default constructor  A constructor that receives a string argument  A constructor that takes a string argument and an Exception argument Slide 13 Programmer-defined Exception classes: Example Programmer-defined Exception classes: Example (cont.) class NegativeNumberException : ApplicationException { public NegativeNumberException() : base( "Phai nhap vao so khong am" ) { } public NegativeNumberException( string message ) : base( message ) { } public NegativeNumberException( string message, Exception inner ) : base( message, inner ) { } } Programmer-defined Exception classes: Example (cont.) private void squareRootButton_Click( object sender, System.EventArgs e ) { outputLabel.Text = ""; try { double input = Double.Parse(inputTextBox.Text); if ( input < 0 ) throw new NegativeNumberException( "Square root of negative number not permitted" ); double result = Math.Sqrt(input); outputLabel.Text = result.ToString(); } // BẮT lỗi định dạng số không hợp lệ catch ( FormatException error ) { MessageBox.Show( error.Message, "Invalid Operation", MessageBoxButtons.OK, MessageBoxIcon.Error ); } // BẮT lỗi nhập số âm catch ( NegativeNumberException error ) { MessageBox.Show( error.Message, "Invalid Operation", MessageBoxButtons.OK, MessageBoxIcon.Error ); } } Validating user input  When getting data from the user, you must ensure that the entered data is valid  You can use various techniques for validating data:  By using standard controls such as combo boxes, list boxes, radio buttons, check boxes, numericupdown, trackbar,  By enabling or disabling data fields, depending on the state of other fields  By capturing the user’s keystrokes and analyze them for validity  By analyzing the contents of the data field as a whole and warn the user of any incorrect values when the user attempts to leave the field or close the window Slide 17 Keystroke-level validation Slide 18  When pressing a key on a control, three events occur in the following order:  KeyDown event  KeyPress event  KeyUp event 4 KeyPressEventArgs class  Properties  KeyChar: returns the character value that corresponds to the key  Handled: indicates whether the event has been handled  Example: not allow to input alphabets private void txtX_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar >= 'A' && e.KeyChar <= 'Z') || (e.KeyChar >= 'a' && e.KeyChar <= 'z')) e.Handled = true; } Slide 19 KeyEventArgs class Slide 20  Properties  Alt: returns true if the Alt key is pressed; otherwise, returns false  Control: …  Handled: indicates whether the event has been handled  KeyCode: returns the keyboard code for the event  KeyData: returns the key code for the pressed key, combination of modifier keys (Ctrl, Shift, and Alt)  KeyValue: returns the integer representation of the KeyData  Modifiers: returns the modifier flags that indicate what combination of modifier keys (Ctrl, Shift, and Alt) are pressed  Shift: … KeyEventArgs class (cont.)  Example: catch Enter key private void TextBox1_KeyDown( object sender, KeyEventArgs e ) { if (e.KeyCode == Keys.Enter) MessageBox.Show("You pressed Enter key"); }  Example: catch keys combination private void TextBox1_KeyDown( object sender, KeyEventArgs e ) { if (e.Alt && e.KeyCode.ToString() == "F") { MessageBox.Show("You pressed Alt+F combination"); } } Slide 21 Field-level validation Slide 22  When the user enters and leaves a field, the events occur in the following order:  Enter: Occurs when a control is entered  GotFocus: Occurs when a control receives focus  Leave: Occurs when focus leaves a control  Validating: Occurs when a control is validating  Validated: Occurs when a control is finished validating  LostFocus: Occurs when a control looses focus  The Validating event is the ideal place to store the validating logic for a field The Validating event Slide 23  In the Validating event, to retain the focus in the current control, forcing the user to fix the problem before proceeding further  To do this, you can use either of the following techniques  Use the Focus() method of the control to transfer the focus back to the field  Set the Cancel property of CancelEventArgs to true to cancel the Validating event  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 Validating event (cont.)  Example: private void txtX_Validating(object sender, CancelEventArgs e) { try { int x = Convert.ToInt32(txtX.Text); if (x < 0) { MessageBox.Show("Please enter a value > 0"); txtX.SelectAll(); txtX.Focus(); // e.Cancel = true; } } catch (Exception ex) { MessageBox.Show(ex.Message); txtX.SelectAll(); txtX.Focus(); // e.Cancel = true; } } Slide 24 5 The ErrorProvider component Slide 25  You can display an error to alert the user about invalid data input  Using MessageBox.Show  Using ErrorProvider component  BlinkRate property  BlinkStyle property  ContainerControl property  GetError() method  Icon property  SetError() method  SetIconAlignment() method  SetIconPadding() method The ErrorProvider component  Example: private void txtX_Validating(object sender, CancelEventArgs e) { try { int x = Convert.ToInt32(txtX.Text); if (x > 0) errorProvider1.SetError(txtX, ""); else { errorProvider1.SetError(txtX, "Please enter a value > 0"); txtX.Focus(); // e.Cancel = true; } } catch (Exception ex) { errorProvider1.SetError(txtX, ex.Message); txtX.Focus(); // e.Cancel = true; } } Slide 26 . 1 Debugging and Error Handling Chapter 6 Ebook: Beginning Visual C# 2010, chapter 7 Reference: CSharp How to Program, part D Contents  Introduction  Debugging  Error Handling. to handle these exceptional situations. This is called exception handling Slide 5 Error Handling (cont.) int tu = Convert.ToInt32( txtNumerator.Text ); int mau = Convert.ToInt32(.  Logical errors: A program may run, but produce incorrect results, perhaps using an incorrect formula 1 -3 Debugging  Debugging is the process of finding and correcting logic errors in

Ngày đăng: 13/05/2014, 11:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan