Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 19 kết quả

Đề tài: Khi nào nên dùng try...catch trong lập trình C#

  1. #1
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mặc định Khi nào nên dùng try...catch trong lập trình C#

    Chào các bạn. nay rảnh rổi ngồi nghĩ bậy bạ nghĩ ra 1 câu hỏi, nó cũng điên điên nhưng đưa lên đây anh em cùng thảo luận.

    Trong bộ .NET nó cung cấp cho chúng ta một cái tool dùng để chặn các 'Ngoại lệ' lúc runtime rất hay đó là try...catch.

    Nhưng zkday được biết dùng nó thì làm chương trình chậm đi<chưa hiểu nguyên tắc của nó nên chưa giải thích được>

    Vậy vấn đề đặt ra ở đây là khi nào chúng ta cần dùng nó. khi nào không

  2. #2
    Ngày gia nhập
    11 2008
    Bài viết
    77

    hê hê mình thấy là dùng trong kết nối database là nhiều nhất bởi khi kết nối database có rất nhiều lỗi phát sinh (mình kiến thức còn nông cạn có gì sai chỉ giáo thêm )

  3. #3
    Ngày gia nhập
    10 2008
    Bài viết
    14

    mình nghĩ khi nào mình cảm thấy đoạn code có khả năng phát sinh lỗi thì mình sẽ dùng nó để bắt lỗi hoặc khi kết nối với database thì mình nên dùng nó để có thể xử lý lỗi của database theo ý mình chứ đừng để chương trình tự xử lý.
    Nếu bạn nào là cao thủ SQL thì nên dùng trigger để bắt lỗi thì tốt hơn là mình dùng try... catch.Vì dùng try... catch sẽ có thời gian xử lý lâu hơn là trigger.Đối với những chương trình nhỏ thì thời gian xử lý thì chẳng đáng là bao nhưng khi gặp chương trình lớn hoặc database lớn thì thời gian xử lý ảnh hưởng đến tốc dộ chạy của chương trình.
    Ý kiến của mình là thế anh em đóng góp thêm nha

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    294

    @ vf6.0 : trigger is evil ^^! Khi bạn dùng trigger, bạn đã đẩy quá trình kiểm soát lỗi xuống server. Vừa tăng tải server, vừa góp phần gây nghẽn đường truyền ^^! Những lỗi do người dùng nhập hoàn toàn có thế kiểm soát trên client ^^!

    Hơn nữa,try ... catch để bắt exception. Exception có thể do người dùng tự sinh ra (throw exception) hoặc do lỗi run time. Nếu bạn dùng trigger bạn sẽ xử lý thế nào nếu đường truyền hỏng hoặc db chưa được start?

    Vì dùng try... catch sẽ có thời gian xử lý lâu hơn là trigger
    Phát biểu hoàn toàn cảm tính ^^! Về cơ bản trigger giống như hàm được built-in trong db. Đã được compile sẵn nên chạy rất nhanh. Tuy nhiên để đến được cái bước ấn dữ liệu xuống db cho trigger chạy thì bạn phải làm đủ các bước get dữ liệu trên client. Trong khi đó nếu bạn dùng exception, chỉ cần lỗi 1 dữ liệu, server chả phải làm gì sất. Vậy cái nào sẽ nhanh hơn?

    Và nữa là nếu bạn không có try.. catch thì khi có exception nó sẽ out ngay lập tức chứ không có chiện tự xử lý đâu ^^! M$ chưa có làm cái compiler thông minh đến như thế được đâu ^^!

    @ trung : try... catch được ứng dụng rất nhiều, không phải chỉ với db bạn nhé. Nếu bạn đọc qua java sẽ thấy try...catch được dùng trong hầu hết các hàm của java.

    @ zk : Tự đọc nhé ^^!

    http://msdn.microsoft.com/en-us/libr...33(VS.71).aspx
    http://msdn.microsoft.com/en-us/library/0yd65esw.aspx

    Làm nhiều việc hơn thì phải chậm hơn chứ sao ^^! And do it for safe ^^!

    Cheers!

    P/S: Có một số trường hợp không cần dùng, ví dụ như các hàm private thì thường có try ... catch cũng được,không có cũng chẳng sao ^^!
    Is the moon rising...

  5. #5
    Ngày gia nhập
    09 2007
    Bài viết
    724

    @trung: ngoài cái vấn đề này, còn gì nữa không nhỉ ?

    @vf6.0: ngoài những điều anh Dark nói thì mình xin bổ sung một số ý kiến sau.
    - Try catch là để bắt lỗi trên client. Giả sử (cứ giả bộ chương trình của bạn chỉ run trên 1 máy thôi nhé ) thì có 2 trường hợp:
    + Nếu bạn không viết gì liên quan tới database (giả sử là 1 cái game cờ vua đơn giản chẳng hạn ) thì cái vấn đề của bạn không giải quyết được rồi .
    + Nếu bạn viết chương trình liên quan tới Database thì: bạn dùng trigger để bắt lỗi thì thiếu nhỉ. Giả sử trường hợp này nhé. Khi người dùng không kết nối được với database thì sao nhỉ ? lúc này chưa làm gì tới database để làm việc với trigger cả.

    @dark: Thank anh.

    Mà hình như anh hiểu nhầm ý của em thì phải .
    Ý của em là: Trong những trường hợp nào chúng ta cần dùng try....catch. (tức hạn chế tối đa dùng nó)

  6. #6
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Mặc định Khi nào nên dùng try...catch trong lập trình C#

    @ zk : 2 cái link anh đưa trên là nguyên lý của try... catch.

    Khi code có thể xảy ra một số lỗi nằm ngoài ý muốn, nên nếu muốn hạn chế chương trình crash thì tất cả đều nên dùng try catch ^^!

    Tuy nhiên các hàm private thì đều phải gọi qua các hàm public, cho nên nếu các hàm public đã dùng try catch thì exception của hàm private đều được catch ở hàm public. Nên có dùng try catch ở các hàm private hay ko ko ảnh hưởng lắm đến chương trình, dùng hay ko đều được cả ^^!

    Túm lại là cái nào là public thì nên dùng try catch ^^!

    Cheers!
    Is the moon rising...

  7. #7
    Ngày gia nhập
    11 2008
    Bài viết
    77

    trong C# bật try... catch hay ko cũng dc , chứ trong Java mà ko bật try... catch thì khi compile là bị lỗi ( thật khó hiểu )
    => try... catch đúng là dùng trong rất nhiều trường hợp ( khi cảm thấy có lỗi thì bật try... catch), nhưng đa số thường thấy khi kết nối database ( vì toàn lỗi trên trời dưới đất khó kiểm soát
    =>
    Code:
    Túm lại là cái nào là public thì nên dùng try catch ^^!
    câu này chính xác ( lý do : exception thường được truyền ra ngoài assembly
    boundaries)
    ==> có gì ko chính xác nhờ các huynh chỉ giáo thêm

  8. #8
    Ngày gia nhập
    11 2008
    Bài viết
    77

    tiện thể cho mình hỏi : thread (nghĩa tiếng anh là sợi chỉ) mình gặp hoài nhưng ko hiểu thuật ngữa nó gọi là gì , và ứng dụng làm gì ,giải thích thêm giùm mình :o
    thanks nhiều

  9. #9
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi trung Xem bài viết
    tiện thể cho mình hỏi : thread (nghĩa tiếng anh là sợi chỉ) mình gặp hoài nhưng ko hiểu thuật ngữa nó gọi là gì , và ứng dụng làm gì ,giải thích thêm giùm mình :o
    thanks nhiều
    Thread có thể tạm hiểu là một luồng. Về bản chất nó là một hàm nhưng có khả năng chạy song song với các hàm khác. Khi bạn gọi hàm thì bạn phải chờ nó chạy xong thì bạn mới có thể chạy tiếp. Còn nếu tạo thread thì hàm đó sẽ chạy song song và bạn ko cần phải chờ nó trả về mà vẫn chạy tiếp được.

    PS : lần sau bạn ko được hỏi làm loãng chủ đề như vậy nữa nha.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  10. #10
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Hix thank anh hôm qua em đã đọc 2 cái link anh đưa nó giải thích cho em được câu nói này của anh
    ví dụ như các hàm private thì thường có try ... catch cũng được,không có cũng chẳng sao ^^!
    tức giờ ta bỏ được 1 trường hợp phải dùng try...catch là các hàm private rồi.

    Vì: Trước sau gì hàm private cũng được 1 hàm nào đó gọi lại. Nếu hàm private gặp Exception thì nó sẽ 'quăng' ra catch của hàm public gọi nó. --> tiết kiệm được 1 vài chổ try....catch.

Các đề tài tương tự

  1. Database Nên dùng MS Access hay MSSQL trong ứng dụng này
    Gửi bởi congcanh_coltech trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 31-07-2013, 01:57 PM
  2. SqlDataAdapter có nên dùng trong lập trình web ASP.NET?
    Gửi bởi duyanh_28 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 5
    Bài viết cuối: 15-03-2013, 10:58 PM
  3. Graphic nên dùng GDI hay hình ảnh để làm đồ họa trong Winform
    Gửi bởi lequ0ch0anglt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 09-01-2012, 10:45 AM
  4. Nên dùng tag Div hay Table trong thiết kế website?
    Gửi bởi tuanngocpt trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 16
    Bài viết cuối: 19-09-2011, 08:47 AM
  5. Em nên dùng While trong bai nay như nào
    Gửi bởi adam452 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 13-03-2008, 12:57 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn