Danh mục

Hình thành công thức điều chỉnh testfunc khi thực hiện chia với zero

Số trang: 50      Loại file: pdf      Dung lượng: 1.09 MB      Lượt xem: 8      Lượt tải: 0    
Thu Hiền

Phí tải xuống: 7,000 VND Tải xuống file đầy đủ (50 trang) 0
Xem trước 5 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trong ví dụ này, phương thức DoDivide() sẽ không cho phép chúng ta chia cho zero bởi mộtsố khác, và cũng không cho phép chia số zero. Nó sẽ phát sinh một đối tượng của Divide-ByzeroException nếu chúng ta thực hiện chia với zero. Trong toán học việc lấy zero chia chomột số khác là được phép, nhưng trong ví dụ minh họa của chúng ta không cho phép thựchiện việc này, nếu thực hiện sẽ phát sinh ra một ngoại lệ Arithmetic Exception....
Nội dung trích xuất từ tài liệu:
Hình thành công thức điều chỉnh testfunc khi thực hiện chia với zero Giáo trình hình thànhLập Trình C# Ngôn Ngữ công thức điều chỉnh testfunc khi thực hiện chia với zero { public static void Main() { Test t = new Test(); t.TestFunc(); } // ta thử chia hai phần xử lý ngoại lệ riêng public void TestFunc() { try { double a = 5; double b = 0; Console.WriteLine(“{0} / {1} = {2}”, a, b, DoDivide(a,b)); } catch (System.DivideByZeroException) { Console.WriteLine(“DivideByZeroException caught!”); } catch (System.ArithmeticException) { Console.WriteLine(“ArithmeticException caught!”); } catch { Console.WriteLine(“Unknown exception caught”); } } // thực hiện phép chia hợp lệ public double DoDivide(double a, double b) { if ( b == 0) throw new System.DivideByZeroException(); if ( a == 0) throw new System.ArithmeticException(); return a/b; } } 372. Xử Lý Ngoại Lệ . Ngôn Ngữ Lập Trình C# } -----------------------------------------------------------------------------  Kết quả: DivideByZeroException caught! ----------------------------------------------------------------------------- Trong ví dụ này, phương thức DoDivide() sẽ không cho phép chúng ta chia cho zero bởi một số khác, và cũng không cho phép chia số zero. Nó sẽ phát sinh một đối tượng của Divide- ByzeroException nếu chúng ta thực hiện chia với zero. Trong toán học việc lấy zero chia cho một số khác là được phép, nhưng trong ví dụ minh họa của chúng ta không cho phép thực hiện việc này, nếu thực hiện sẽ phát sinh ra một ngoại lệ ArithmeticException. Khi một ngoại lệ được phát sinh, CLR sẽ kiểm tra mỗi khối xử lý ngoại lệ theo thứ tự và sẽ lấy khối đầu tiên thích hợp. Khi chúng ta thực hiện với a=5 và b=7 thì kết quả như sau: 5 / 7 = 0.7142857142857143 Như chúng ta mong muốn, không có ngoại lệ được phát sinh. Tuy nhiên, khi chúng ta thay đổi giá trị của a là 0, thì kết quả là: ArithmeticException caught! Ngoại lệ được phát sinh, và CLR sẽ kiểm tra ngoại lệ đầu tiên: DivideByZeroException. Bởi vì không phù hợp, nên nó sẽ tiếp tục đi tìm và khối xử lý ArithmeticException được chọn. Cuối cùng, giả sử chúng ta thay đổi giá trị của b là 0. Khi thực hiện điều này sẽ dẫn đến ngoại lệ DivideByZeroException. Ghi chú: Chúng ta phải cẩn thận thứ tự của câu lệnh catch, bởi vì DivideByZero- Exception được dẫn xuất từ ArithmeticException. Nếu chúng ta đảo thứ tự của câu lệnh catch, thì ngoại lệ DivideByZeroException sẽ được phù hợp với khối xử lý ngoại lệ Arith- meticException. Và việc xử lý ngoại lệ sẽ không bao giờ được giao cho khối xử lý DivideByZeroException. Thật vậy, nếu thứ tự này được đảo, nó sẽ không cho phép bất cứ ngoại lệ nào được xử lý bởi khối xử lý ngoại lệ DivideByZeroException. Trình biên dịch sẽ nhận ra rằng DivideByZeroException không được thực hiện bất cứ khi nào và nó sẽ thông báo một lỗi biên dịch. Chúng ta có thể phân phối câu lệnh try/ catch, bằng cách bắt giữ những ngoại lệ xác định trong một hàm và nhiều ngoại lệ tổng quát trong nhiều hàm. Mục đích của thực hiện này là đưa ra các thiết kế đúng. Giả sử chúng ta có phương thức A, phương thức này gọi một phương thức khác tên là phương thức B, đến lượt mình phương thức B gọi phương thức C. Và phương thức C tiếp tục gọi phương thức D, cuối cùng phương thức D gọi phương thức E. Phương thức E ở mức độ sâu nhất trong chương trình của chúng ta, phương thức A, B ở mức độ cao hơn. Nếu chúng ta đoán trước phương thức E có thể phát sinh ra ngoại lệ, chúng ta có thể tạo ra khối try/catch để bắt giữ những ngoại lệ này ở chỗ gần nơi phát sinh ra ngoại lệ nhất. Chúng ta cũng có thể tạo ra nhiều khối xử lý ngoại lệ chung ở trong đoạn chương trình ở mức cao trong trường hợp những ngoại lệ không đoán trước được. 373. ...

Tài liệu được xem nhiều: