VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

C# Cơ Bản

C# là gì? - C# được sử dụng để làm gì? C# - Cài đặt môi trường C# - Cấu trúc chương trình C# - Cấu trúc cơ bản C# - Kiểu dữ liệu C# - Ép kiểu dữ liệu C# - Hằng số (Constant) C# - Toán tử C# - Lệnh if-else C# - Lệnh switch-case C# - Vòng lặp for C# - Vòng lặp while C# - Vòng lặp do-while C# - Nullable C# - Phương thức C# - Lớp (class) và đối tượng (Object) C# - Mảng (array) C# - Chuỗi (string) C# - Struct C# - Enum C# - Interface C# - Namespace C# - Preprocessor Directive C# - Regular Expression C# - Xử lý ngoại lệ C# - File I/O

Các Tính Chất Hướng Đối Tượng C#

C# - Tính đóng gói C# - Tính kế thừa C# - Tính đa hình C# - Nạp chồng toán tử

C# Nâng Cao

C# - Attribute C# - Reflection C# - Property C# - Indexer C# - Delegate C# - Sự kiện (Event) C# - Collection C# - Generic C# - Phương thức nặc danh C# - Unsafe Code C# - Multithreading

Bài tập C#

Bài tập C# có lời giải

Học Lập Trình C/C++

Học lập trình C Học lập trình C++
1 / 3
❮ ❯

Xử lý ngoại lệ trong C#


Regular Expression trong C#
File I/O trong C#

Xử lý ngoại lệ trong C# có nghĩa là xử lý các lỗi exceptions có thể xảy ra , giúp chương trình không bị gián đoạn. Trong đó Exceptions là một sự kiện xảy ra khi một chương trình đang chạy (thực thi) , sự kiện đó làm cho luồng xử lý thông thường của chương trình không thể thực hiện một cách bình thường, thậm chí chế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ệ mà xuất hiện trong khi một chương trình đang chạy, ví dụ như chia cho số 0.


Nội dung chính

  • Từ khóa try, catch, finally, và throw
  • Cú pháp xử lý ngoại lệ trong C#
  • Lớp Exception trong C#
  • Xử lý ngoại lệ ( Exception Handling) trong C#
  • Tạo User-Defined Exception trong C#
  • Ném (throw) các Object trong C#

Từ khóa try, catch, finally, và throw

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. 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.

  • 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, khối lệnh finally luôn luôn được thực thi 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#.


Cú pháp xử lý ngoại lệ trong C#

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:


try
{
   // các lệnh có thể gây ra ngoại lệ (exception)
}
catch( tên_ngoại_lệ e1 )
{
   // phần code để xử lý lỗi
}
catch( tên_ngoại_lệ e2 )
{
   // phần code để xử lý lỗi
}
catch( tên_ngoại_lệ eN )
{
   // phần code để xử lý lỗi
}
finally
{
   // các lệnh được thực thi
}

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.


Lớp Exception trong C#

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.

Bảng sau cung cấp một số lớp Exception tiền định nghĩa được kế thừa từ lớp Sytem.SystemException trong C#:

Lớp Exception Mô tả
System.IO.IOException Xử lý các I/O error
System.IndexOutOfRangeException 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
System.ArrayTypeMismatchException Xử lý các lỗi được tạo khi kiểu là không phù hợp với kiểu mảng
System.NullReferenceException Xử lý các lỗi được tạo từ việc tham chiếu một đối tượng null
System.DivideByZeroException Xử lý các lỗi được tạo khi chia cho số 0
System.InvalidCastException Xử lý lỗi được tạo trong khi ép kiểu
System.OutOfMemoryException Xử lý lỗi được tạo từ việc thiếu bộ nhớ rỗi
System.StackOverflowException Xử lý lỗi được tạo từ việc tràn ngăn xếp (stack)

Xử lý ngoại lệ ( Exception Handling) trong C#

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à finally trong C#. Ví dụ sau ném một exception khi chia cho số 0.


using System;

namespace VietTutsCsharp
{
    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();
        }
    }
}

Kết quả:

Vi du minh hoa Exception trong C#
---------------------------------
Bat Exception: System.DivideByZeroException: Attempted to divide by zero.

Tạo User-Defined Exception trong C#

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


using System;

namespace VietTutsCsharp
{
    class Temperature
    {
        int temperature = 0;
        public void showTemp()
        {
            if (temperature == 0)
            {
                throw (new MyException("Muc nhiet do 0!"));
            }
            else
            {
                Console.WriteLine("Nhiet do: {0}", temperature);
            }
        }
    }
}

Lớp MyException: đây là một lớp ngoại lệ tự định nghĩa, kế thừa lớp ApplicationException


using System;

namespace VietTutsCsharp
{
    class MyException : ApplicationException
    {
        public MyException(string message)
            : base(message)
        {
        }
    }
}

Lớp TestCsharp


using System;

namespace VietTutsCsharp
{
    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 (MyException e)
            {
                Console.WriteLine("Loi: {0}", e.Message);
            }
            Console.ReadKey();
        }
    }
}

Kết quả:

Vi du minh hoa Xu ly ngoai le trong C#
---------------------------------
Loi: Muc nhiet do 0!

Ném (throw) các Object trong C#

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 đó:


Catch(Exception e)
{
   ...
   Throw e
}

Regular Expression trong C#
File I/O trong C#

Recent Updates

Bài tập quản lý sinh viên trong C#Bài tập C# - Liệt kê số Fibonacci nhỏ hơn n và là số nguyên tố trong C#Bài tập C# - Tìm số thuận nghịch trong C#Bài tập C# - Tính tổng của các chữ số của môt số nguyên n trong C#Bài tập C# - Phân tích số nguyên n thành tích các số nguyên tố trong C#Bài tập C# - Liệt kê tất cả số nguyên tố có 5 chữ số trong C#Bài tập C# - Liệt kê n số nguyên tố đầu tiên trong C#Bài tập C# - Liệt kê tất cả các số nguyên tố nhỏ hơn n trong C#Bài tập C# - Tìm ước số chung lớn nhất (USCLN) và bội số chung nhỏ nhất (BSCNN) của 2 sốGiải phương trình bậc 2 trong C#Chuyển đổi hệ cơ số trong C#Tính giai thừa trong C#Sắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml