Trang chủ
Bài viết mới
Diễn đàn
Bài mới trên hồ sơ
Hoạt động mới nhất
VIDEO
Mùa Tết
Văn Học Trẻ
Văn Học News
Media
New media
New comments
Search media
Đại Học
Đại cương
Chuyên ngành
Triết học
Kinh tế
KHXH & NV
Công nghệ thông tin
Khoa học kĩ thuật
Luận văn, tiểu luận
Phổ Thông
Lớp 12
Ngữ văn 12
Lớp 11
Ngữ văn 11
Lớp 10
Ngữ văn 10
LỚP 9
Ngữ văn 9
Lớp 8
Ngữ văn 8
Lớp 7
Ngữ văn 7
Lớp 6
Ngữ văn 6
Tiểu học
Thành viên
Thành viên trực tuyến
Bài mới trên hồ sơ
Tìm trong hồ sơ cá nhân
Credits
Transactions
Xu: 0
Đăng nhập
Đăng ký
Có gì mới?
Tìm kiếm
Tìm kiếm
Chỉ tìm trong tiêu đề
Bởi:
Hoạt động mới nhất
Đăng ký
Menu
Đăng nhập
Đăng ký
Install the app
Cài đặt
Chào mừng Bạn tham gia Diễn Đàn VNKienThuc.com -
Định hướng Forum
Kiến Thức
- HÃY TẠO CHỦ ĐỀ KIẾN THỨC HỮU ÍCH VÀ CÙNG NHAU THẢO LUẬN Kết nối:
VNK X
-
VNK groups
| Nhà Tài Trợ:
BhnongFood X
-
Bhnong groups
-
Đặt mua Bánh Bhnong
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Tìm hiểu về xử lý ngoại lệ trong C#
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Trả lời chủ đề
Nội dung
<blockquote data-quote="uocmo_kchodoi" data-source="post: 177539" data-attributes="member: 165510"><p style="text-align: center"><strong><span style="color: #ff0000">XỬ LÝ NGOẠI LỆ TRONG C# (Exception)</span></strong></p> <p style="text-align: center"><strong><span style="color: #ff0000"></span></strong></p><p><strong>Khái niệm: </strong>Một Exception (ngoại lệ) là một vấn đề xuất hiện trong khi thực thi một chương trình. Một Exception trong C# là một phản hồi về một tình huống ngoại lệ xuất hiện trong khi một chương trình đang chạy, ví dụ như chia cho số 0.</p><p></p><p>Exception cung cấp một cách để truyền điều khiển từ một phần của một chương trình tới phần khác. Exception Handling (Xử lý ngoại lệ) trong C# được xây dựng dựa trên 4 từ khóa là:try, catch, finally, và throw.</p><ul> <li data-xf-list-type="ul">try: Một khối try nhận diện một khối code mà ở đó các exception cụ thể được kích hoạt. Nó được theo sau bởi một hoặc nhiều khối catch.<br /> <br /> </li> <li data-xf-list-type="ul">catch: Một chương trình bắt một Exception với một Exception Handler tại vị trí trong một chương trình nơi bạn muốn xử lý vấn đề đó. Từ khóa catch trong C# chỉ dẫn việc bắt một exception.<br /> <br /> </li> <li data-xf-list-type="ul">finally: Một khối finally được sử dụng để thực thi một tập hợp lệnh đã cho, dù có hay không một exception đươc ném hoặc không được ném. Ví dụ, nếu bạn mở một file, nó phải được đóng, nếu không sẽ có một exception được tạo ra.<br /> <br /> </li> <li data-xf-list-type="ul">throw: Một chương trình ném một exception khi có một vấn đề xuất hiện. Điều này được thực hiện bởi sử dụng từ khóa throw trong C#.<br /> </li> </ul><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>1. Cú pháp</strong></span></span></p><p><span style="font-size: 18px"></span></p><p>Giả sử một khối tạo một Exeption, một phương thức bắt một exception bởi sử dụng kết hợp các từ khóa try và catch. Một khối try/catch được đặt xung quanh code mà có thể tạo một exception. Code bên trong một khối try/catch được xem như là code được bảo vệ, và cú pháp để sử dụng try/catch trong C# như sau:</p><p></p><p><span style="color: #5900b3"><em>try</em></span></p><p><span style="color: #5900b3"><em>{</em></span></p><p><span style="color: #5900b3"><em> // các lệnh có thể gây ra ngoại lệ (exception)</em></span></p><p><span style="color: #5900b3"><em>}</em></span></p><p><span style="color: #5900b3"><em>catch( tên_ngoại_lệ e1 )</em></span></p><p><span style="color: #5900b3"><em>{</em></span></p><p><span style="color: #5900b3"><em> // phần code để xử lý lỗi</em></span></p><p><span style="color: #5900b3"><em>}</em></span></p><p><span style="color: #5900b3"><em>catch( tên_ngoại_lệ e2 )</em></span></p><p><span style="color: #5900b3"><em>{</em></span></p><p><span style="color: #5900b3"><em> // phần code để xử lý lỗi</em></span></p><p><span style="color: #5900b3"><em>}</em></span></p><p><span style="color: #5900b3"><em>catch( tên_ngoại_lệ eN )</em></span></p><p><span style="color: #5900b3"><em>{</em></span></p><p><span style="color: #5900b3"><em> // phần code để xử lý lỗi</em></span></p><p><span style="color: #5900b3"><em>}</em></span></p><p><span style="color: #5900b3"><em>finally</em></span></p><p><span style="color: #5900b3"><em>{</em></span></p><p><span style="color: #5900b3"><em> // các lệnh được thực thi</em></span></p><p><span style="color: #5900b3"><em>}</em></span></p><p>Bạn có thể liệt kê nhiều lệnh catch để bắt các kiểu exception khác nhau trong trường hợp khối try của bạn xuất hiện nhiều hơn một exception trong các tình huống khác nhau.</p><p></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>2. Lớp Exception trong C#</strong></span></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"></span></span></p><p>Các Exception trong C# được biểu diễn bởi các lớp. Các lớp Exception trong C# chủ yếu được kế thừa một cách trực tiếp hoặc không trực tiếp từ lớp System.Exception trong C#. Một số lớp Exception kế thừa từ lớp System.Exception là các lớp System.ApplicationException vàSystem.SystemException.</p><p></p><p>Lớp System.ApplicationException hỗ trợ các exception được tạo bởi các chương trình ứng dụng. Vì thế, các exception được định nghĩa bởi lập trình viên nên kế thừa từ lớp này.</p><p></p><p>Lớp System.SystemException là lớp cơ sở cho tất cả system exception tiền định nghĩa.</p><p></p><p>Sau đây là một số lớp Exception tiền định nghĩa được kế thừa từ lớp<em>Sytem.SystemException</em> trong C#:</p><p></p><p><span style="color: #00b300">1. System.IO.IOException:</span> Xử lý các I/O error</p><p><span style="color: #00b300">2. System.IndexOutOfRangeException</span>: Xử lý các lỗi được tạo khi một phương thức tham chiếu tới một chỉ mục bên ngoài dãy mảng</p><p><span style="color: #00b300">3. System.ArrayTypeMismatchException:</span> Xử lý các lỗi được tạo khi kiểu là không phù hợp với kiểu mảng</p><p><span style="color: #00b300">4. System.NullReferenceException:</span> Xử lý các lỗi được tạo từ việc tham chiếu một đối tượng null</p><p><span style="color: #00b300">5. System.DivideByZeroException:</span> Xử lý các lỗi được tạo khi chia cho số 0</p><p><span style="color: #00b300">6. System.InvalidCastException:</span> Xử lý lỗi được tạo trong khi ép kiểu</p><p><span style="color: #00b300">7. System.OutOfMemoryException:</span> Xử lý lỗi được tạo từ việc thiếu bộ nhớ rỗi</p><p><span style="color: #00b300">8. System.StackOverflowException:</span> Xử lý lỗi được tạo từ việc tràn ngăn xếp (stack)</p><p><span style="font-size: 18px"></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>3. Xử lý ngoại lệ ( Exception Handling) trong C#</strong></span></span></p><p><span style="font-size: 18px"></span></p><p>C# cung cấp một giải pháp mang tính cấu trúc cao để xử lý ngoại lệ trong form các khối try và catch. Sử dụng các khối này, các lệnh chương trình được phân biệt riêng rẽ với các lệnh xử lý ngoại lệ trong C#.</p><p></p><p>Những khối xử lý ngoại lệ này được triển khai bởi sử dụng các từ khóa try, catch và finallytrong C#. Ví dụ sau ném một exception khi chia cho số 0.</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> int result;</span></em></p><p><em><span style="color: #5900b3"> TestCsharp()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> result = 0;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> public void phepChia(int num1, int num2)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> try</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> result = num1 / num2;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> catch (DivideByZeroException e)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Bat Exception: {0}", e);</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> finally</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Ket qua: {0}", result);</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Vi du minh hoa Exception trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("---------------------------------");</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> TestCsharp d = new TestCsharp();</span></em></p><p><em><span style="color: #5900b3"> d.phepChia(25, 0);</span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.</p><p></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/xu-ly-ngoai-le.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p><p><span style="font-size: 18px"></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>4. Tạo User-Defined Exception trong C#</strong></span></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"></span></span></p><p>Bạn cũng có thể định nghĩa exception cho riêng bạn. Các lớp User-Defined Exception được kế thừa từ lớp ApplicationException trong C#. Ví dụ sau minh họa điều này:</p><p></p><p>Tạo 3 lớp có tên lần lượt là như sau:</p><p></p><p>Lớp Temperature</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class Temperature</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> int temperature = 0;</span></em></p><p><em><span style="color: #5900b3"> public void showTemp()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> if (temperature == 0)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> throw (new TempIsZeroException("Muc nhiet do 0!!!"));</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> else</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Nhiet do: {0}", temperature);</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Lớp TempIsZeroException: đây là một lớp ngoại lệ tự định nghĩa, kế thừa lớpApplicationException</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class TempIsZeroException : ApplicationException</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public TempIsZeroException(string message)</span></em></p><p><em><span style="color: #5900b3"> : base(message)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Lớp TestCsharp</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Vi du minh hoa Xu ly ngoai le trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("---------------------------------");</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Temperature temp = new Temperature();</span></em></p><p><em><span style="color: #5900b3"> try</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> temp.showTemp();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> catch (TempIsZeroException e)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("TempIsZeroException: {0}", e.Message);</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/xu-ly-ngoai-le-1.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p><p><span style="font-size: 18px"></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>5. Ném các Object trong C#</strong></span></span></p><p><span style="font-size: 18px"></span></p><p>Bạn có thể ném một đối tượng nếu nó: hoặc trực tiếp hoặc gián tiếp được kế thừa từ lớp System.Exception trong C#. Bạn có thể sử dụng một lệnh throw trong khối catch để ném đối tượng hiện diện đó:</p><p></p><p><em><span style="color: #5900b3">Catch(Exception e)</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> ...</span></em></p><p><em><span style="color: #5900b3"> Throw e</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><span style="color: #000000">Vậy là nghiên cứu xong bài này bạn đã có thể xử lý các ngoại lệ của C# một cách ngon lành rồi đấy. Chúc các bạn thành công!</span></p><p></p><p style="text-align: right"><em><span style="color: #000000">Nguồn: vietjack.com</span></em></p></blockquote><p></p>
[QUOTE="uocmo_kchodoi, post: 177539, member: 165510"] [CENTER][B][COLOR=#ff0000]XỬ LÝ NGOẠI LỆ TRONG C# (Exception) [/COLOR][/B][/CENTER] [B]Khái niệm: [/B]Một Exception (ngoại lệ) là một vấn đề xuất hiện trong khi thực thi một chương trình. Một Exception trong C# là một phản hồi về một tình huống ngoại lệ xuất hiện trong khi một chương trình đang chạy, ví dụ như chia cho số 0. Exception cung cấp một cách để truyền điều khiển từ một phần của một chương trình tới phần khác. Exception Handling (Xử lý ngoại lệ) trong C# được xây dựng dựa trên 4 từ khóa là:try, catch, finally, và throw. [LIST] [*]try: Một khối try nhận diện một khối code mà ở đó các exception cụ thể được kích hoạt. Nó được theo sau bởi một hoặc nhiều khối catch. [*]catch: Một chương trình bắt một Exception với một Exception Handler tại vị trí trong một chương trình nơi bạn muốn xử lý vấn đề đó. Từ khóa catch trong C# chỉ dẫn việc bắt một exception. [*]finally: Một khối finally được sử dụng để thực thi một tập hợp lệnh đã cho, dù có hay không một exception đươc ném hoặc không được ném. Ví dụ, nếu bạn mở một file, nó phải được đóng, nếu không sẽ có một exception được tạo ra. [*]throw: Một chương trình ném một exception khi có một vấn đề xuất hiện. Điều này được thực hiện bởi sử dụng từ khóa throw trong C#. [/LIST] [SIZE=5][COLOR=#0000ff][B]1. Cú pháp[/B][/COLOR] [B][/B][/SIZE] Giả sử một khối tạo một Exeption, một phương thức bắt một exception bởi sử dụng kết hợp các từ khóa try và catch. Một khối try/catch được đặt xung quanh code mà có thể tạo một exception. Code bên trong một khối try/catch được xem như là code được bảo vệ, và cú pháp để sử dụng try/catch trong C# như sau: [COLOR=#5900b3][I]try[/I] [I]{[/I] [I] // các lệnh có thể gây ra ngoại lệ (exception)[/I] [I]}[/I] [I]catch( tên_ngoại_lệ e1 )[/I] [I]{[/I] [I] // phần code để xử lý lỗi[/I] [I]}[/I] [I]catch( tên_ngoại_lệ e2 )[/I] [I]{[/I] [I] // phần code để xử lý lỗi[/I] [I]}[/I] [I]catch( tên_ngoại_lệ eN )[/I] [I]{[/I] [I] // phần code để xử lý lỗi[/I] [I]}[/I] [I]finally[/I] [I]{[/I] [I] // các lệnh được thực thi[/I] [I]}[/I][/COLOR] Bạn có thể liệt kê nhiều lệnh catch để bắt các kiểu exception khác nhau trong trường hợp khối try của bạn xuất hiện nhiều hơn một exception trong các tình huống khác nhau. [SIZE=5][COLOR=#0000ff][B]2. Lớp Exception trong C#[/B] [B][/B][/COLOR][/SIZE] Các Exception trong C# được biểu diễn bởi các lớp. Các lớp Exception trong C# chủ yếu được kế thừa một cách trực tiếp hoặc không trực tiếp từ lớp System.Exception trong C#. Một số lớp Exception kế thừa từ lớp System.Exception là các lớp System.ApplicationException vàSystem.SystemException. Lớp System.ApplicationException hỗ trợ các exception được tạo bởi các chương trình ứng dụng. Vì thế, các exception được định nghĩa bởi lập trình viên nên kế thừa từ lớp này. Lớp System.SystemException là lớp cơ sở cho tất cả system exception tiền định nghĩa. Sau đây là một số lớp Exception tiền định nghĩa được kế thừa từ lớp[I]Sytem.SystemException[/I] trong C#: [COLOR=#00b300]1. System.IO.IOException:[/COLOR] Xử lý các I/O error [COLOR=#00b300]2. System.IndexOutOfRangeException[/COLOR]: Xử lý các lỗi được tạo khi một phương thức tham chiếu tới một chỉ mục bên ngoài dãy mảng [COLOR=#00b300]3. System.ArrayTypeMismatchException:[/COLOR] Xử lý các lỗi được tạo khi kiểu là không phù hợp với kiểu mảng [COLOR=#00b300]4. System.NullReferenceException:[/COLOR] Xử lý các lỗi được tạo từ việc tham chiếu một đối tượng null [COLOR=#00b300]5. System.DivideByZeroException:[/COLOR] Xử lý các lỗi được tạo khi chia cho số 0 [COLOR=#00b300]6. System.InvalidCastException:[/COLOR] Xử lý lỗi được tạo trong khi ép kiểu [COLOR=#00b300]7. System.OutOfMemoryException:[/COLOR] Xử lý lỗi được tạo từ việc thiếu bộ nhớ rỗi [COLOR=#00b300]8. System.StackOverflowException:[/COLOR] Xử lý lỗi được tạo từ việc tràn ngăn xếp (stack) [SIZE=5][B][/B] [COLOR=#0000ff][B]3. Xử lý ngoại lệ ( Exception Handling) trong C#[/B][/COLOR] [B][/B][/SIZE] C# cung cấp một giải pháp mang tính cấu trúc cao để xử lý ngoại lệ trong form các khối try và catch. Sử dụng các khối này, các lệnh chương trình được phân biệt riêng rẽ với các lệnh xử lý ngoại lệ trong C#. Những khối xử lý ngoại lệ này được triển khai bởi sử dụng các từ khóa try, catch và finallytrong C#. Ví dụ sau ném một exception khi chia cho số 0. [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class TestCsharp { int result; TestCsharp() { result = 0; } public void phepChia(int num1, int num2) { try { result = num1 / num2; } catch (DivideByZeroException e) { Console.WriteLine("Bat Exception: {0}", e); } finally { Console.WriteLine("Ket qua: {0}", result); } } static void Main(string[] args) { Console.WriteLine("Vi du minh hoa Exception trong C#"); Console.WriteLine("---------------------------------"); TestCsharp d = new TestCsharp(); d.phepChia(25, 0); Console.ReadKey(); } } }[/COLOR][/I] Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn. Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/xu-ly-ngoai-le.PNG[/IMG][/CENTER] [SIZE=5][B][/B] [COLOR=#0000ff][B]4. Tạo User-Defined Exception trong C#[/B] [B][/B][/COLOR][/SIZE] Bạn cũng có thể định nghĩa exception cho riêng bạn. Các lớp User-Defined Exception được kế thừa từ lớp ApplicationException trong C#. Ví dụ sau minh họa điều này: Tạo 3 lớp có tên lần lượt là như sau: Lớp Temperature [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class Temperature { int temperature = 0; public void showTemp() { if (temperature == 0) { throw (new TempIsZeroException("Muc nhiet do 0!!!")); } else { Console.WriteLine("Nhiet do: {0}", temperature); } } } }[/COLOR][/I] Lớp TempIsZeroException: đây là một lớp ngoại lệ tự định nghĩa, kế thừa lớpApplicationException [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class TempIsZeroException : ApplicationException { public TempIsZeroException(string message) : base(message) { } } }[/COLOR][/I] Lớp TestCsharp [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class TestCsharp { static void Main(string[] args) { Console.WriteLine("Vi du minh hoa Xu ly ngoai le trong C#"); Console.WriteLine("---------------------------------"); Temperature temp = new Temperature(); try { temp.showTemp(); } catch (TempIsZeroException e) { Console.WriteLine("TempIsZeroException: {0}", e.Message); } Console.ReadKey(); } } }[/COLOR][/I] Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/xu-ly-ngoai-le-1.PNG[/IMG][/CENTER] [SIZE=5][B][/B] [COLOR=#0000ff][B]5. Ném các Object trong C#[/B][/COLOR] [B][/B][/SIZE] Bạn có thể ném một đối tượng nếu nó: hoặc trực tiếp hoặc gián tiếp được kế thừa từ lớp System.Exception trong C#. Bạn có thể sử dụng một lệnh throw trong khối catch để ném đối tượng hiện diện đó: [I][COLOR=#5900b3]Catch(Exception e) { ... Throw e } [/COLOR][/I] [COLOR=#000000]Vậy là nghiên cứu xong bài này bạn đã có thể xử lý các ngoại lệ của C# một cách ngon lành rồi đấy. Chúc các bạn thành công![/COLOR] [I][COLOR=#000000][/COLOR][/I] [RIGHT][I][COLOR=#000000]Nguồn: vietjack.com[/COLOR][/I][/RIGHT] [/QUOTE]
Tên
Mã xác nhận
Gửi trả lời
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Tìm hiểu về xử lý ngoại lệ trong C#
Top