PDA

View Full Version : [DIS] C#: try { } catch {} có bạn nào rành về cơ chế bắt lỗi này không ? :D (newbie)



BonBon
29-05-2003, 17:12
Theo các tài liệu thì đây là cơ chế bắt lỗi rất hay của C#, vậy có bạn nào có kinh nghiệm về việc này không ?

Chỉ bảo giúp nhé :D

PS: mình đang học căn bản, vì vậy rất cần nắm vững cơ chế (debug) này, cám ơn các bạn tham gia !

White_Rose
29-05-2003, 23:32
Cú pháp đấy đủ:
try
{//...}
catch(..Exception exp1)
{//...}
catch(...Exception exp2)
finally
{//...}

trình tự như sau:
- thực hiện mọi lệnh trong try
- nếu có bất kì lỗi nào ứng với Exception chỉ ra bởi Catch thì đoạn code tương ứng với catch đó được thực hiện. Bạn có thể sử dụng một hay nhiều catch tuỳ thuộc vào các lỗi có thể xảy ra. Exception cao nhất, có thể bắt mọi lỗi.
code trong finally sẽ được thực hiện sau khi code trong try và catch được thực hêịn xong (cho dù có Exception xảy ra hay không).
Thường dùng để giải phóng các tài nguyên đã cấp phát.

BonBon
30-05-2003, 02:13
ok :D thanks White_rose :D

vậy ngoài ra còn có những thủ thuật hay cách thức nào khi sử dụng cơ chế này không ? hay là chỉ có vậy thôi WR nhỉ ?

danceswithwolves
30-05-2003, 08:44
FYI, có cú pháp non-catch :


try
{
}
finally
{
}


hay non-finally :


try
{
}
catch (ExceptionType)
{
}


cú pháp để catch các exception phi .NET (các exception kiểu bất kỳ - int, long, class... (native) không nhất thiết derived từ class Exception) :


try
{
}
catch
{
}


và cú pháp rethrow exception :


throw;

vanlang
30-05-2003, 14:36
hix. làm ơn nói rõ về cái throw được ko

danceswithwolves
30-05-2003, 15:32
không :D.

vanlang
30-05-2003, 15:37
kỳ rứa .. làm ơn đi mừ....

danceswithwolves
30-05-2003, 16:23
cú pháp rethrow chẳng qua là throw exception tiếp mà thôi. Ví dụ :


try
{
flirt(katrina);
Console.WriteLine("Successful ! Unbelievable !");
}
catch (VikhoaException e)
{
// i can handle it
Console.WriteLine("Well, there is something wrong...");
Console.WriteLine("Vikhoa says {0}", e.Message);
}
catch // any exception other than VikhoaException
{
Console.WriteLine("I dont expect this situation. Let the caller handle it");
throw; // rethrow any exception this catch block caught
}

một cách dễ hiểu, đoạn code trên không xử lý exception mà gửi lên đơn vị code đã invoke đoạn code này.

vanlang
30-05-2003, 16:29
thế mât tiêu đâu cia rethrow rùi ... mình viết code gặp nhìu thằng này lắm mà kô hỉu gì hết cả ...

White_Rose
30-05-2003, 18:40
try
{
flirt(katrina);
Console.WriteLine("Successful ! Unbelievable !");
}Đoạn code tuyệt vời :D


thế mât tiêu đâu cia rethrow rùi ... mình viết code gặp nhìu thằng này lắm mà kô hỉu gì hết cả ...
throw được sử dụng để tạo ra một exception. Syntax của nó như sau:
throw [exp];
Nếu không có exp thì như DWW nói đó, nó gửi trả lại chính cái exception vừa mới tóm được.
Nếu muốn tạo ra một exception mới thì để một object ở sau, ví dụ:
if(somevalue>constvalue)
{
MyException e = new MyException("Wrong!");
throw e;
}
MyException là một class được derive từ Exception

vanlang
30-05-2003, 18:44
okies ... hix .. mấy bác tài wé .. em chịu thua thui