Luyện tập Xử lý ngoại lệ
Trong lab này, bạn sẽ thực hành các kỹ thuật mã hóa xử lý ngoại lệ. Các ngoại lệ sẽ xảy ra trong mã của bạn và lập kế hoạch và mã hóađúng cách sẽ làm cho ứng dụng của bạn hoạt động một cách chuyên nghiệp.
Bước Visual Studio
- Mở Visual Studio
- Chọn File, New, Project
- Từ phần Templates, chọn Visual C#
- Chọn Console App (.NET Framework if using VS 2017 or later)
- Đặt tên project, ví dụ Mod3_Lab2
- Lựa chọn vị trí lưu dự án.
- Nhấn nút OK và Visual Studio sẽ tạo ra ứng dụng mới C# Console application project cho bạn và mở ra file Program.cs trong editor.
- Đặt con trỏ của bạn ngay sau dấu ngoặc nhọn mở trong phương thức Main, sau đó nhấn enter để tạo một dòng mới
- Đặt con trỏ của bạn sau dấu ngoặc nhọn đóng của hàm void void Main(string[] args) và nhấn enter. Chúng tôi đang làm điều này bởi vì bạn không muốn đặt các phương thức hàm bên trong một hàm khác.
- Đoạn mã sau bạn sẽ nhập là một phương thức mới có tên Divide() sẽ thực hiện phép chia đơn giản. Vấn đề chúng ta sẽ gặp là một vấn đề phổ biến trong toán học, chia cho số không. Nó không được phép và như bạn sẽ thấy trong lab này, .NET Framework thực sự có một ngoại lệ liên quan đến điều này. Hiện tại, hãy nhập mã sau đây để chúng tôi sẽ tạo ngoại lệ này. Chúng tôi sẽ giải quyết việc xử lý nó trong các nhiệm vụ tiếp theo.
// Method Divide() accepts two integer arguments and returns the result
// of dividing first by second
// We do no validation of the the arguments so a user may pass in a zero
// in place of the second parameter. This is an illegal operation in math
// If we don't validate input or catch the error, the application will crash
static int Divide(int first, int second)
{
int result = first / second;
return result;
}
11. Bây giờ chúng ta có thể gọi phương thức này từ bên trong Main để thực hiện phép chia. Nhập mã sau trong dấu ngoặc nhọn của Main():
int result = Divide(2, 0);
- Chạy ứng dụng bằng cách nhấn CTRL + F5 hoặc chọn Debug, Start Without Debugging, từ menu. Ứng dụng sẽ sập và hiển thị một thông báo khó hiểu trong console window cùng với hộp thoại bật lên và cho bạn biết rằng ứng dụng đã ngừng hoạt động. Đọc tin nhắn trong console window và chú ý tham chiếu đến System.DivideByZeroException. Bạn không muốn người dùng ứng dụng của bạn thấy hành vi hoặc tin nhắn như thế này. Hãy sửa nó đi.
- Nhấp vào nút Close Program trên hộp thoại và sau đó nhấn Enter để đóng console window và quay lại Visual Studio.
- Bạn cần phải bọc mã, điều đó có thể gây ra ngoại lệ, bên trong một khối xử lý ngoại lệ bằng cách sử dụng try..catch..finally. Sửa đổi phương thức Divide() của bạn để trông như thế này:
// Method Divide() that contains exception handling to deal with
// divide by zero exceptions.
static int Divide(int first, int second)
{
int result = 0;
try
{
result = first / second;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Cannot divide by zero, please provide a non-zero value for your second value");
}
return result;
}
- Chúng tôi đã thay đổi một vài điều ở đây. Đầu tiên, chúng tôi di chuyển khai báo kết quả trên một dòng của riêng mình. Điều này là cần thiết để đảm bảo chúng tôi có quyền truy cập vào cả bên trong và bên ngoài mã xử lý ngoại lệ.
- Tiếp theo, chúng tôi gói dòng mã có thể gây ra ngoại lệ, với một khối try. Như đã đề cập trong nội dung khóa học, bạn chỉ cần đặt mã có khả năng dễ bị lỗi, bên trong khối try. Chúng tôi không đặt khai báo biến trong khối try.
- Khối catch sau khối try sẽ đặc biệt cho ngoại lệ DivideByZeroException và nếu xảy ra, chúng tôi sẽ hiển thị thêm thân thiện với người dùng tin nhắn đến console window.
- Chúng tôi không bao gồm một khối finally ở đây và chúng tôi cũng không kiểm tra bất kỳ trường hợp ngoại lệ nào khác vì lab được thiết kế chỉ để cung cấp cho bạn thực hành trong việc tạo thói quen xử lý ngoại lệ đơn giản.
- Bây giờ, hãy thực hiện một số thay đổi đối với mã trong Main() để chúng tôi yêu cầu người dùng nhập liệu. Đây là một kịch bản thực tế hơn trái ngược với các giá trị mã hóa cứng cho các biến trong mã của chúng tôi. Nhập mã sau vào Main() để nhắc nhập và gọi phương thức với các giá trị đó:
static void Main(string[] args)
{
int first = 9;
int second = 0;
Console.WriteLine("Enter your first number: ");
first = System.Int32.Parse(Console.ReadLine());
Console.WriteLine("Enter your second number: ");
second = System.Int32.Parse(Console.ReadLine());
int result = Divide(first, second);
Console.WriteLine($"The result of dividing {first} by {second} is {result}");
}
- Chạy mã mới được sửa đổi này để xem hành vi của ứng dụng của bạn bây giờ. Bạn sẽ thấy thông báo mới được hiển thị nếu bạn truyền 0 vào dưới dạng tham số thứ hai nhưng không thấy thông báo nếu bạn vượt qua giá trị khác không.
Đăng nhận xét