Ch ng 11 .ươ Ki m soát ngo i l
Exception Handling
Outline
11.1 T ng quan v c ch x ngo i l ơ ế
11.2 C u trúc phân c p ngo i l trong .NET
11.3 Finally Block
11.4 Các thu c tính ngo i l
11.5 Nh ng l p ngo i l ng i dùng đ nh nghĩa ườ
11.6 X lý tràn v i toán t checked và unchecked
11.1 T ng quan v c ch x ngo i l ơ ế
X lý ngo i l
T o ra nh ng ng d ng có th đi u khi n ho c gi i quy t ngo i ế
l
Khi n ch ng trình tr nên rõ ràng,m nh và ít l i. ế ươ
T khoá
Try
Bao g m nh ng mã mà ngo i l có th x y ra
Catch
Gi i thi u nh ng ki u ngo i l mà kh i catch có th x
Finally
Nh ng đo n mã (không b t bu c) đây s luôn đ c th c ượ
hi n
X lý ngo i l
S d ng kh i Try-Catch này đ x lý ngo i l d n xu t
Kiu Catch
Phi là mt lp Exception hoc m rng ca nó mt cách trc tiếp
hay gián tiếp
Stack tri
CLR c gng định v mt khi Try trong phương thc được gi
11.1 T ng quan v c ch x ngo i l ơ ế
Ví d :Chia cho 0 DivideByZeroException
V n đ
Trong m t phép chia,khi m u s là 0 s gây tràn s , t o ra l i và
n u không đ c x lý ch ng trình có th d ng ng d ng ho c đ a ế ượ ươ ư
ra nh ng ng d ng không nh mong ư đ i
•Ph ng pháp ươ
Convert.ToInt32 s t đ ng dò tìm nh ng khuy t t t phát ra t s ế
nguyên
T o ra m t FormatException, t c là đ a ra l i v đ nh d ng. ư
- CLR s t đ ng dò tìm phép chia cho s 0, và khi th y s đ a ra ư
DivideByZeroException
1 // DivideByZeroTest.cs
2
3 using System;
4 using System.Drawing;
5 using System.Collections;
6 using System.ComponentModel;
7 using System.Windows.Forms;
8 using System.Data;
9
10 public class DivideByZeroTest : System.Windows.Forms.Form
11 {
12 private System.Windows.Forms.Label numeratorLabel;
13 private System.Windows.Forms.TextBox numeratorTextBox;
14
15 private System.Windows.Forms.Label denominatorLabel;
16 private System.Windows.Forms.TextBox denominatorTextBox;
17
18 private System.Windows.Forms.Button divideButton;
19 private System.Windows.Forms.Label outputLabel;
20
25 // Yêu c u bi n thi t k ế ế ế
26 private System.ComponentModel.Container components = null;
27
28 // C u trúc m c đ nh
29 public DivideByZeroTest()
30 {
32 InitializeComponent();
33 }
34
Nh ng h th ng c b n ơ
c a c ch x lý ngo i ơ ế
l trong C#
L p th hi n cách x
ngo i l t phép chia cho
s 0 trong toán h c s
nguyên và trong đ nh d ng
s h c không chính xác
Đòi h i h tr b ng
thi t k d ng c a s ế ế
DivideByZeroTest.cs