Lệnh Finally

Một phần của tài liệu Giới thiệu về khóa học C# căn bản pptx (Trang 40 - 42)

Trong một số tình huống chúng ta cần phải thực hiện bất cứ khi nào một ngoại lệ được phát sinh ra, ví dụ như việc đóng một tập tin. Để làm việc này chúng ta có thể đặt câu lệnh trong cả hai khối try và catch. Tuy nhiên có một cách giải quyết tốt hơn, đó là sử dụng câu lệnh Finnally. Các hành động đặt trong khối finnally sẽ luôn được thực hiện mà không cần quan tâm tới việc có hay không một ngoại lệ phát sinh trong chương trình.

Chúng ta cùng xét ví dụ sau: using System; namespace Programming_CSharp {

public class Test {

public static void Main() {

t.TestFunc();

Console.ReadLine(); }

// chia hai số và xử lý ngoại lệ nếu có public void TestFunc()

{ try { Console.WriteLine("mở file"); double a = 5; double b = 0; Console.WriteLine("{0} /{1} = {2}", a, b, DoDivide(a,b)); Console.WriteLine("dòng này có thể xuất hiện hoặc không"); }

catch (System.DivideByZeroException) {

Console.WriteLine("lỗi chia cho 0!"); }

catch {

Console.WriteLine("không có ngoại lệ"); } finally { Console.WriteLine("Đóng tệp."); } }

// thực hiện chia nếu hợp lệ

public double DoDivide(double a, double b) {

if ( b == 0) {

thrownew System.DivideByZeroException(); }

if ( a == 0) {

thrownew System.ArithmeticException(); } return a/b; } } }

Đầu tiên hãy gán a= 5 và b=0 chạy chương trình Bạn sẽ thấy lệnh Console.WriteLine("dòng này có thể xuất hiện hoặc không");

Sẽ không được thực hiện do xuất hiện một ngoại lệ là lỗi chia cho 0 và chương trình sẽ tìm tới phần xử lý ngoại lệ này

mà bỏ qua phần lệnh tiếp theo.

Sau đó bạn thay đổi giá trị b=12 và chạy chương trình thì lệnh

Console.WriteLine("dòng này có thể xuất hiện hoặc không"); được thực hiện.

Tuy nhiên ở cả 2 trường hợp bạn đề thấy thực hiện lệnh Console.WriteLine("Đóng tệp.");

Đó là vì lệnh này đã được đặt trong khối Finally.

Nắm được cách xử lý ngoại lệ qua việc sử dụng các câu lệnh throw, catch và finally sẽ giúp bạn lập trình có hiệu quả hơn.

Một phần của tài liệu Giới thiệu về khóa học C# căn bản pptx (Trang 40 - 42)