Hotline: 0909.141.661

Email: plpsoft.vn@gmail.com

Hotline: 0909.141.661 | Email: plpsoft.vn@gmail.com

Bài 9. Xử lý ngoại lệ trong C# (C# căn bản)

Bài 9. Xử lý ngoại lệ trong C# (C# căn bản)

Bài 9. Xử lý ngoại lệ trong C# (C# căn bản)

Xử lý ngoại lệ trong c# là xử lý cho một vấn đề phát sinh trong quá trình thực hiện chương trình, như vấn đề phát sinh khi đọc một file không tồn tại, ….

Xử lý ngoại lệ trong C# được xây dựng trên bốn từ khoá trycatchfinally và throw.

Xử lý ngoại lệ trong c# – Cú pháp

try

{

   // Câu lệnh có thể phát sinh lỗi thực thi

}

catch(Exception_Class object)

{

   // Xử lý ngoại lệ

}

finally

{

   // cleanup

}

Bảng bên dưới mô tả một số Exception class thường gặp

Exception class

Mô tả

IOException

Xử lý các lỗi nhập xuất file

IndexOutOfRangeException

Xử lý các lỗi phát sinh khi truy cập vượt chỉ số mảng

NullReferenceException

Xử lý các lỗi phát sinh khi sử dụng một object chưa được tạo

InvalidCastException

Xử lý lỗi phát sinh khi chuyển đổi sai kiểu dữ liệu

Exception

Ngoại lệ tổng quát

Xử lý ngoại lệ trong c# – Ví dụ

Ví dụ sau được sử dụng try…catch để xử lý lỗi phát sinh khi người dùng nhập sai kiểu dữ liệu cho biến kiểu số.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication.lesson08

{

 class Numbers

 {

  static void Main(string[] args)

  {

   int n = 0;

   bool isError;

   do

   {

    isError = false;

    try

    {

     Console.Write("Enter your number ");

     n = Convert.ToInt32(Console.ReadLine());

    }

    catch (Exception e)

    {

      Console.WriteLine("Invalid number. Please try again!");

      isError = true;

    }

   } while (isError);

   Console.Write("Your number is {0}", n);

   Console.ReadLine();

  }

 }

}

Xử lý ngoại lệ trong c# – Ngoại lệ tự định nghĩa

Lập trình viên có thể tự định nghĩa một ngoại lệ cho chính mình thay vì sử dụng những ngoại lệ có sẵn bằng cách kế thừa lớp Exception. Bên dưới là một ví vụ giải thích cách tạo một ngoại lệ.

Bước 1: Tạo một lớp exception

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication.lesson08

{

 class MyException:Exception

 {

   public MyException(string msg): base(msg)

   {

   }

 }

}

Bước 2: Sử dụng exception tự định nghĩa

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication.lesson08

{

 class Scores

 {

  public static void showScore(float avg)

  {

   if (avg < 0)

   {

    throw (new MyException("Average score must be greater than 0"));

   }

   else

   {

    Console.WriteLine("Average score: {0}", avg);

   }

  }

  static void Main(string[] args)

  {

   try

   {

    // Ok

    showScore(7.8F);

    // Exception

    showScore(-10.0F);

   }

   catch (MyException me)

   {

    Console.Write("{0}", me.Message);

   }

   Console.ReadLine();

  }

 }

}

Kết quả khi chạy chương trình

 

Xử lý ngoại lệ trong c# – Bài tập thực hành

Câu 1: Tạo namespace tên Library và BorrowBook

Câu 2: Tạo lớp Student thuộc Library. Lớp Student có các thuộc tính như sau: studentID, studentName, age, gender và city có phạm vi truy cập là private. Trong lớp này có các phương thức sau:

Phương thức nhập chi tiết các thông tin cho Student. Trong phương thức này kiểm tra giá trị nhập vào như sau:

  • studentID
  • studentName phải có độ dài từ 6-40 ký tự
  • age>=18 (chỉ được phép nhập số)
  • gender kiểu string và chỉ nhận 1 trong 2 giá trị Nam hoặc Nữ. Ngoài 2 giá trị trên, bắt người dùng phải nhập lại.
  • city phải có độ dài từ 4-40 ký tự

Phương thức hiển thị thông tin của Student.

Câu 3: Xây dưng lớp Book thuộc BorrowBook có các thuộc tính như số lượng sách mượn, loại sách cần mượn, phần trăm theo ngày mượn và số lượng ngày mượn.

Phương thức AcceptDetails nhập chi tiết các thông tin cho Book. Kiểm tra các giá trị nhập vào số lượng sách > 0, số ngày mượn >0 và <31 (chỉ được nhập số).

Loại sách mượn và rate nhập theo menu như sau

Phương thức CalculateAmount() theo công thức

Số lượng * (rate / 100) * số ngày mượn * 10

Phương thức DisplayDetails() hiển thị chi tiết

Câu 4: Xây dựng lớp thực thi để thực hiện các chức năng trên

 

 

 

 

 

 

 

Tin Khác