636
Chương 16: Các giao diện và mẫu thông dụng
new Person("Mr", "Richard", "Glen", "David", "Peters");
// Hiển thị tên bằng nhiều format string khác nhau.
System.Console.WriteLine("Dear {0:G},", person);
System.Console.WriteLine("Dear {0:P},", person);
System.Console.WriteLine("Dear {0:I},", person);
System.Console.WriteLine("Dear {0},", person);
System.Console.WriteLine("Dear {0:S},", person);
Khi được thực thi, đoạn mã này sinh ra kết xuất như sau:
Dear Richard Peters,
Dear Mr. R. G. D. Peters,
Dear Richard,
Dear Richard Peters,
Dear R. Peters,
7.
7.
Hi n th c l p ngo i l tùy bi n
ệ
ự ớ
ạ ệ
ế
Hi n th c l p ngo i l tùy bi n
ệ
ự ớ
ạ ệ
ế
Bạn cần tạo một lớp ngoại lệ tùy biến sao cho bạn có thể sử dụng cơ chế thụ lý
ngoại lệ của bộ thực thi để thụ lý các ngoại lệ đặc-trưng-ứng-dụng.
Tạo một lớp khả-tuần-tự-hóa, thừa kế lớp
System.ApplicationException
và hiện
thực các phương thức khởi dựng với chữ ký như sau:
public CustomException() : base() {}
public CustomException(string message) : base(message) {}
public CustomException(string message, Exception inner)
: base(message, inner) {}
Thêm bất cứ thành viên dữ liệu tùy biến nào mà ngoại lệ cần đến, bao gồm các phương thức
khởi dựng và các thuộc tính cần thiết để thao tác các thành viên dữ liệu.
Các lớp ngoại lệ là duy nhất, bạn không được khai báo các lớp mới để hiện thực chức năng
mới hay mở rộng. Cơ chế thụ lý ngoại lệ của bộ thực thi (được trưng ra bởi các lệnh:
try
,
catch
, và
finally
) làm việc dựa trên kiểu ngoại lệ bị ném, chứ không phải các thành viên
chức năng hay dữ liệu được hiện thực bởi ngoại lệ bị ném.
Nếu cần ném một ngoại lệ, bạn nên sử dụng một lớp ngoại lệ có sẵn trong thư viện lớp .NET
Framework (nếu tồn tại một lớp phù hợp). Dưới đây là một số ngoại lệ hữu ích:
•
System.ArgumentNullException
—khi mã lệnh truyền một giá trị đối số
null
cho một
phương thức không hỗ trợ đối số
null
.
•
System.ArgumentOutOfRangeException
—khi mã lệnh truyền cho phương thức một giá
trị đối số không phù hợp (lớn quá hay nhỏ quá).