Tìm hiểu `panic`
Thuộc phần Logic và luồng điều khiển trong hành trình GO của Coddy. Bài học 42 trên 68.
Trong Go, panic là hàm tích hợp sẵn, dùng trong những tình huống thực sự ngoại lệ khi chương trình gặp lỗi không thể khắc phục và phải dừng ngay lập tức. Khác với các lỗi thông thường mà bạn xử lý một cách nhẹ nhàng, panic chỉ dành cho những lỗi nghiêm trọng cho thấy có điều gì đó sai căn bản trong logic hoặc môi trường của chương trình.
Khi gọi panic, chương trình lập tức dừng việc thực thi bình thường của hàm hiện tại và bắt đầu tháo gỡ ngăn xếp lời gọi. Điều này khiến cách xử lý rất khác với cách làm phổ biến trong Go là trả về lỗi để đoạn code gọi hàm xử lý.
Trong Go, người ta hiếm khi dùng panic. Cộng đồng Go ưu tiên xử lý lỗi tường minh thông qua giá trị trả về hơn là xử lý lỗi bằng panic. Bạn có thể gặp panic trong những tình huống như truy cập phần tử ngoài phạm vi của mảng, giải tham chiếu con trỏ nil hoặc khi thư viện phát hiện trạng thái bất khả thi cho thấy có lỗi lập trình.
Hầu hết chương trình Go nên xử lý lỗi một cách thích hợp bằng interface error chuẩn mà bạn đã tìm hiểu. Chỉ nên cân nhắc dùng panic khi chương trình thực sự không còn cách hợp lý nào để tiếp tục chạy.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng điều khiển
1Luồng điều khiển nâng cao
Switch với `fallthrough`Thoát khỏi vòng lặp lồng nhauTiếp tục một vòng lặp cụ thểCâu lệnh `goto`Ôn tập: điều khiển vòng lặp nâng cao4Dự án: Danh sách việc cần làm đơn giản
Thiết lập dự ánThêm một việc cần làm7Xử lý lỗi chuyên sâu
Kiểu lỗi tùy chỉnhBọc lỗi bằng `%w`Gỡ bọc lỗi bằng `errors.Is`Gỡ bọc lỗi bằng `errors.As`Tìm hiểu `panic`Sử dụng `recover`Ôn tập: phép chia an toàn2Struct và phương thức
Định nghĩa phương thức cho structReceiver giá trịReceiver con trỏChọn receiverPhương thức và hàmÔn tập: hành vi của struct5Tìm hiểu chuyên sâu về map
Map chứa structCon trỏ làm giá trị của mapKiểm tra map nilSo sánh các mapÔn tập: bộ đếm tần suất từ8Dự án: Quản lý hàng tồn kho đơn giản
Tổng quan dự ánKiểm tra hàng tồn kho3Interface (cơ bản)
Interface là gì?Định nghĩa interfaceTriển khai interfaceDùng kiểu interfaceInterface rỗngKhẳng định kiểuType switchÔn tập: hình dạng và hành viTự luyện tập: Trình biên dịch Go online