30/09/2018, 17:52

Thắc mắc tác dụng Exception, try, catch, throw

Mới tìm hiểu về “Exception, try, catch, throw” nhưng em vẫn chưa thật hiệu rõ công dụng của các thành phần đó.
Nó có lợi ý gì so với khi ta xử lí lỗi bằng tay không ?
Em còn rất mơ hồ về cái đó nên câu hỏi có phần rất mơ hồ theo ạ @@

lấy VD trên web này thì em cảm thấy nó rất là rắc rối và dài dòng @@ (do kiến thức còn hạn hẹp nên em thấy vậy)
https://kafeden.wordpress.com/2014/11/05/c-ngoai-le-exception-va-cach-su-dung-cau-lenh-try-catch-throw/

Mong mọi người giải thích và chỉ giáo em với.

GodOfGod viết 19:53 ngày 30/09/2018
try
{
   //Khối này sẽ được thực hiện
   //Nếu xảy ra lỗi tại excution time thì dừng lại và thực hiện khối catch tương ứng với lỗi đó
   //Có thể tự ném ra lỗi bằng cách dùng lệnh throw

}
catch(...)
{
    //Khi xảy ra lỗi tại excution time thì xử lí tại đây
}

Sử dụng khối try…catch để tránh các lỗi khi chạy chương trình mà khi compile không thể biết được (ví dụ chương trình yêu cầu người dùng nhập vào 2 số nguyên a,b và in ra kết quả a/b, khi compile không thể biết được người dùng nhập vào thứ gì, nếu người dùng nhập b = 0 hoặc nhập chữ thì sẽ phát sinh lỗi -> treo, đơ, … )

Itachi Citus viết 20:05 ngày 30/09/2018

Mục đích là phân tách khối xử lý ngoại lệ ra khỏi khối xử lý chính, giúp quản lý rõ ràng hơn. Bên cạnh đó, thay vì bạn return -1, -2 bla bla khó quản lý thì nó giúp lưu trữ một cách cụ thể thông tin ngoại lệ, cho phép bạn throw ngoại lệ ra nhiều cấp cho tới khi đến vị trí có thể xử lý. Nó là một cách quản lý tốt hơn, vậy thôi.

Nhiều bạn dẽ bị nhầm giữa lỗi (Error) và ngoại lệ (Exception). Thông thường ta chỉ tạo lớp của Exception chứ không tạo Error. Exception là trường hợp ngoại lệ, ví dụ như thay vì return -1 trong trường họp đầu vào không hợp lệ (Không tồn tại file trong hàm đọc file chẳng hạn) thì ta quăng exception. Còn error là thứ ta không quản lý được, chẳng hạn như tràn vùng nhớ stack.

nhoxshockq8 viết 19:54 ngày 30/09/2018

cảm ơn 2 anh @tandatcr2000pro và anh @Itachi_Citus ^^

Bài liên quan
0