Try.. catch - Phần 1


Diễn đàn chia sẻ kiến thức, kinh nghiệm về IT và cuộc sống!
 
Trang ChínhGalleryTìm kiếmLatest imagesĐăng kýĐăng Nhập
Top posters
Sakura (1124)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
hotboy (705)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
Già Làng (373)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
con_ca_nho90 (289)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
that_true (154)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
theanhkkt (143)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
phamay (137)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
lovelonelyman (134)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
o0ovioletstaro0o (128)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
stevenhung (122)
Try.. catch - Phần 1 Vote_lcapTry.. catch - Phần 1 Voting_barTry.. catch - Phần 1 Vote_rcap 
Âm - Dương lịch
Clock
Logo
11TH02 Pro!
Liên kết
Tin tức 60s
Tin công nghệ
Thời sự 24h
Game Moblie

Share
 

 Try.. catch - Phần 1

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Sakura

Try.. catch - Phần 1 Stars7
Sakura

Thú CƯng : Try.. catch - Phần 1 I-hate-Cats-icon
Nam Scorpio

Số bài viết : 1124
Điểm : 1688
Được cảm ơn : 35
Ngày sinh : 03/11/1990
Tham gia ngày : 16/03/2010
Tuổi : 33
Đến từ : Bình Dương
Ngề nghiệp : IT Student

Try.. catch - Phần 1 Empty
Bài gửiTiêu đề: Try.. catch - Phần 1   Try.. catch - Phần 1 I_icon_minitime13/10/2010, 10:39

XỬ LÝ NGOẠI LỆ TRONG C#

Ngoại lệ là gì? Là những tình huống xảy ra mà sẽ làm cho chương trình của chúng ta bị văng lúc run-time.
Ví dụ: giả sử, đâu đó trong chương trình, chúng ta có 1 phép chia cho 0 --> Văng, hoặc là nhập 1 số nguyên, mà ta lại chơi 1 chữ a --> Văng….
Các bạn hãy xem đoạn code này:
Code:
class Test
{
    static void Main()
    {
        int a;
        a = int.Parse(System.Console.ReadLine());
        System.Console.WriteLine("a = " + a);
        System.Console.ReadLine();
    }
}

Nếu chúng ta nhập vào 1 số --> bình thường.
Nếu chúng ta nhập vào 1 hoặc vài ký tự linh tinh, chúng ta sẽ có thông báo sau:
Code:
Input string was not in a correct format.
Nghĩa là IDE đã phát hiện và ném ra 1 ngoại lệ kiểu Format --> Văng
Vậy làm sao để cho chương trình của chúng ta không văng?
Chúng ta phải bắt lấy nó, xử lý, và nói là IDE bỏ qua cho.
Bằng cách: sử dụng try … catch
Cách sử dụng: các bạn xem đoạn chương trình sau, xem tôi kiểm soát lỗi này thế nào?
Code:
using System;

class Test
{
    static void Main()
    {
        int a;
        try
        {
            a = int.Parse(Console.ReadLine());
            Console.WriteLine("a = " + a);
        }
        catch (FormatException e)
        {
            Console.WriteLine("Loi: " + e.Message);
        }
        System.Console.ReadLine();
    }
}

Đoạn chương trình trên, tôi đã sử dụng 2 khối: try và catch.
Khối try: là khối những công việc mà ta muốn làm, mà lại nghi ngờ có xảy ra ngoại lệ trong đó.
Khối catch: là khối mà ta sẽ xử lý nếu có ngoại lệ xảy ra.
Trong đoạn chương trình trên, nếu bạn nhập 1 số, thì khối try sẽ làm hết, khối catch không làm gì hết. Nhưng nếu bạn nhập 1 chữ chẳng hạn, thì khối catch sẽ vào cuộc.
Để ý dòng này:
Code:
FormatException e
Nghĩa là ta đang đón bắt cái lỗi Format.
Nếu chúng ta không biết trước được lỗi gì sẽ xảy ra, ta nên dùng : Exception e
Với chú này, thì anh ngoại lệ nào cũng ko thể thoát được. Hehe!
Thêm 1 vấn đề, nếu trong khối try, ta có nhiều trường hợp gây lỗi? Ví dụ vừa chia cho 0, vừa nhập số cho kiểu int, hay tràn chỉ số.
Cách giải quyết, ta chỉ cần khai báo nhiều khối catch để túm chúng thôi.
Hãy xem đoạn này:
Code:
using System;

class Test
{
    static void Main()
    {
        int a;
        try
        {
            Console.WriteLine("Nhap a: ");
            a = int.Parse(Console.ReadLine());
            Console.WriteLine("a = " + a);
            int c = 12 / a;
            Console.WriteLine("c = " + c);
        }
        catch (FormatException e)
        {
            Console.WriteLine("Loi: " + e.Message);
        }
        catch (DivideByZeroException e)
        {
            Console.WriteLine("Loi: " + e.Message);
        }
        System.Console.ReadLine();
    }
}

Trong đoạn này, có đến 2 trường hợp có thể gây lỗi, nếu ta nhập chữ, thì y trường hợp ở trên, nếu ta nhập 0, ta có ngoại lệ chia cho 0, và tôi đã dùng anh DivideByZeroException để bắt.
Vậy là tạm ổn với 2 khối try.. catch
Giờ tiếp theo là đến khối finnaly:
Nhiệm vụ: thực hiện các việc còn lại, cho dù có hay không có ngoại lệ, thì khối này vẫn làm việc. chúng ta không thể sử dụng các từ khóa điều khiển trong đây, ví dụ: break, return.
Hãy xem ví dụ để xem khối này làm việc ra sao.
Code:
using System;

class Test
{
    static void Main()
    {
        int a;
        try
        {
            Console.WriteLine("Nhap a: ");
            a = int.Parse(Console.ReadLine());
            Console.WriteLine("a = " + a);
            int c = 12 / a;
            Console.WriteLine("c = " + c);
        }
        catch (FormatException e)
        {
            Console.WriteLine("Loi: " + e.Message);
        }
        catch (DivideByZeroException e)
        {
            Console.WriteLine("Loi: " + e.Message);
        }
        finally
        {
            Console.WriteLine("Ket Thuc!");
        }
        System.Console.ReadLine();
    }
}

Ta có thêm khối, finnaly, nó sẽ làm nhiệm vụ xuất ra cái câu Ket Thuc!, và luôn luôn như vậy.
Việc sử dụng khối này, thì phải tùy vào từng trường hợp thôi.
Hôm nay đến đây thôi, rảnh làm tiếp phần throw.
Ai có thắc mắc hoặc ý kiến hay thì xin commnent tại đây!
Cám ơn!
Về Đầu Trang Go down
hotboy

Try.. catch - Phần 1 Stars7
hotboy

Thú CƯng : Try.. catch - Phần 1 Hippopotamus-icon
Nam Aries

Số bài viết : 705
Điểm : 1043
Được cảm ơn : 9
Ngày sinh : 21/03/1990
Tham gia ngày : 13/05/2010
Tuổi : 34
Đến từ : BDU

Try.. catch - Phần 1 Empty
Bài gửiTiêu đề: Re: Try.. catch - Phần 1   Try.. catch - Phần 1 I_icon_minitime13/10/2010, 13:03

hay đấy cố gắng phát huy cho anh em được nhờ
Về Đầu Trang Go down
con_ca_nho90

Member Nhiệt Tình


Member Nhiệt Tình
con_ca_nho90

Thú CƯng : Try.. catch - Phần 1 Dragon-icon
Nam Aquarius

Số bài viết : 289
Điểm : 329
Được cảm ơn : 4
Ngày sinh : 17/02/1990
Tham gia ngày : 05/05/2010
Tuổi : 34
Đến từ : Nhà hàng xóm
Ngề nghiệp : click chuột định giang sơn :D
Chăm ngôn : Giang hồ hiểm ác không bằng mạng lag thất thường

Try.. catch - Phần 1 Empty
Bài gửiTiêu đề: Re: Try.. catch - Phần 1   Try.. catch - Phần 1 I_icon_minitime14/10/2010, 06:31

thanks
Về Đầu Trang Go down
https://plus.google.com/u/0/?hl=vi
.net

Try.. catch - Phần 1 Stars16


Nữ Capricorn

Số bài viết : 14
Điểm : 12
Được cảm ơn : 0
Ngày sinh : 11/01/1989
Tham gia ngày : 11/10/2010
Tuổi : 35
Đến từ : sần

Try.. catch - Phần 1 Empty
Bài gửiTiêu đề: Re: Try.. catch - Phần 1   Try.. catch - Phần 1 I_icon_minitime14/10/2010, 11:01

hiểu không ??thôi mien
Về Đầu Trang Go down
Sponsored content




Try.. catch - Phần 1 Empty
Bài gửiTiêu đề: Re: Try.. catch - Phần 1   Try.. catch - Phần 1 I_icon_minitime

Về Đầu Trang Go down
 

Try.. catch - Phần 1

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

 Similar topics

-
» Bố cục phần báo cáo bài tập lớn + Deadline + Ôn thi
» Phần mềm bảo mật Files
» ứng dụng wpf vào bài tập Phân Số
» bài tập OOP phân số (mời vào giải cho vui)
» Khám phá Windows 7 - Phần 1

Permissions in this forum:Bạn không có quyền trả lời bài viết
IT World! :: HỌC TẬP :: HỌC KỲ V :: Nhập môn .Net-