NỘI DUNG BÀI VIẾT
Trong bài viết này, mình sẽ giúp bạn xem xét cách gỡ lỗi trong các chương trình JavaScript và sự lan truyền lỗi.
JavaScript là một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới. Để sử dụng nó một cách hiệu quả, bạn phải biết những điều cơ bản về nó.
Gỡ lỗi trong JavaScript
Tớ có thể gỡ lỗi các chương trình của mình với console.log
.
Nó ghi lại giá trị được trả về bởi các biểu thức.
Và nó có thể lấy nhiều hơn một trong số chúng làm đối số.
Ví dụ, bạn có thể viết:
console.log (foo);
Code language: JavaScript (javascript)
Hoặc:
console.log(foo, bar);
Code language: JavaScript (javascript)
Và nó có thể cần nhiều tranh luận hơn nữa.
Tất cả các giá trị của đối số sẽ được hiển thị trong bảng điều khiển dành cho lập trình viên.
Tớ có thể sử dụng console.log
một cách chiến lược bằng cách ghi lại các biểu thức mà tớ cho rằng đang gây ra sự cố.
Một thay thế cho console.log
là sử dụng từ khóa debugger
.
Điều này thiết lập một điểm ngắt trong trình duyệt.
Nó bị tạm dừng với câu lệnh debugger
đạt được và tớ có thể kiểm tra giá trị của các biến tại thời điểm đó.
Việc triển khai debugger
khác nhau giữa các trình duyệt.
Sự truyền lỗi
Không phải lập trình viên nào cũng có thể ngăn chặn được lỗi hay gỡ lỗi đó được.
Nếu một chương trình giao tiếp với thế giới bên ngoài, thì có thể có điều gì đó không ổn với chúng.
Chúng tôi muốn xử lý những tình huống đó một cách khéo léo hơn là để chương trình gặp sự cố.
Ví dụ: nếu tớ đang nhắc nhập một số với hàm prompt
và người dùng nhập một thứ gì đó không phải là số. Vậy tớ phải ngăn chặn điều đó.
Tớ có thể viết:
let result = Number(prompt('How many cats do you have?'));
if (Number.isNaN(result)) {
console.log('please input a number')
} else {
console.log(`You have ${result} cats`)
}
Code language: JavaScript (javascript)
Bây giờ nếu người dùng không nhập số, họ sẽ nhận được 'please input a number'
.
Nếu không, `You have ${result} cats`
đâu result
là những gì người dùng đã nhập.
Bạn nên kiểm tra các giá trị mà chương trình của bạn không mong đợi và xử lý chúng.
Nhiều lỗi thường gặp và mã của mình nên tính đến chúng.
Ngoại lệ trong JavaScript
Khi một chức năng không thể tiến hành bình thường, thì tớ có thể muốn dừng và xử lý sự cố.
Đây là những gì xử lý ngoại lệ thực hiện.
Ngoại lệ là một cơ chế giúp cho mã gặp sự cố có thể đưa ra hoặc đưa ra một ngoại lệ.
Một ngoại lệ có thể là bất kỳ giá trị nào.
Một đối tượng lỗi có ngăn xếp cuộc gọi dẫn đến lỗi.
Nếu bạn có:
let result = Number(prompt('How many cats do you have?'));
if (Number.isNaN(result)) {
throw new Error('invalid number');
} else {
console.log(`You have ${result} cats`)
}
Code language: JavaScript (javascript)
Sau đó, tớ gặp lỗi hiển thị trong nhật ký bảng điều khiển với dấu vết ngăn xếp cuộc gọi trong nhật ký bảng điều khiển.
Từ khóa throw
được sử dụng để nêu ra một ngoại lệ.
Bắt một cái là xong, gói mã bằng một khối try
, tiếp theo là catch
.
Sau khi khối catch
kết thúc hoặc nếu khối try
chạy mà không gặp sự cố, thì chương trình sẽ chạy mã bên dưới câu lệnh try/catch
.
Ví dụ, mình viết:
const promptCats = () => {
let result = Number(prompt('How many cats do you have?'));
if (Number.isNaN(result)) {
throw new Error('invalid number');
} else {
console.log(`You have ${result} cats`)
}
}
try {
promptCats();
} catch (err) {
console.log(err)
}
Code language: JavaScript (javascript)
Sau đó, mình bắt lỗi được ném bởi promptCats
nếu một lỗi được ném ra.
Tớ đã sử dụng hàm Error
để tạo các đối tượng lỗi của riêng mình.
Bằng cách này, mình nhận được tất cả thông tin lỗi, bao gồm cả dấu vết ngăn xếp
Dấu vết ngăn xếp nằm trong thuộc tính stack
nếu bạn cần sử dụng nó để gỡ lỗi sự cố.
Nó cho mình biết sự cố xảy ra ở đâu và chức năng nào khiến cuộc gọi không thành công.
Dọn dẹp
Mình phải dọn dẹp sau khi một ngoại lệ được ném ra nếu cần.
Để làm điều đó, tớ sử dụng mệnh đề finally
và chạy mã trong đó.
Ví dụ, tớ viết:
try {
errorCode();
} catch (ex) {
//...
} finally {
//...
}
Code language: JavaScript (javascript)
Mình có quyền finally
chạy bất kỳ mã nào cho dù một ngoại lệ có được ném ra hay không.
Đây là một nơi tiện dụng để chạy mã dọn dẹp.
Kết luận
Để gỡ lỗi, bạn có thể sử dụng câu lệnh debugger
hoặc console.log
.
Bạn nên kiểm tra các tình huống lỗi trong mã của mình.
Các ngoại lệ rất hữu ích cho việc ném nếu bạn gặp các tình huống lỗi.
Mình có thể ném và bắt các ngoại lệ bằng cách sử dụng từ khóa throw
và đặt mã của mình vào một khối try/catch
tương ứng.
Để chạy mã bất kể kết quả như thế nào, chúng ta có thể sử dụng mệnh đề finally
.
Video chia sẻ: Nhật ký học lập trình – Những khó khăn và phương hướng cho người mới
Video dưới đây chia sẻ, kể về những trải nghiệm của một người trẻ từ khi lựa chọn ngành lập trình cho đến khi đi làm. Thông qua câu chuyện của người trẻ này, chúng ta sẽ trao đổi về những tình huống và băn khoăn mà một người học lập trình thường gặp phải:
– Nên học ngôn ngữ gì, công nghệ gì bây giờ?
– Nên học web back-end, hay front-end, hay mobile?
– Nên bắt đầu từ đâu?
– Làm thế nào để duy trì động lực?
– Học hoài mà vẫn chưa làm được gì ra hồn
– Học tư duy lập trình như thế nào cho bền vững?
– Làm gì khi đã bị mất nền tảng?
– Có nên đi thực tập từ sớm không?
– Băn khoăn không biết liệu mình có đủ sức để đi làm không?
– Đi phỏng vấn thì nên yêu cầu mức lương bao nhiêu?
– Ôn luyện trước khi đi phỏng vấn như thế nào?
– Nên lựa chọn công ty như thế nào để đi thực tập và đi làm? …và còn nhiều tình huống nữa
Phiên chia sẻ này đặc biệt phù hợp với các bạn trẻ đang tìm hiểu về ngành lập trình hoặc các bạn mới bắt đầu học lập trình. Qua đó, các bạn trẻ cũng sẽ được cung cấp nhiều lời khuyên bổ ích để chặng đường học lập trình của mình trở nên hữu ích hơn, hiệu quả hơn và thú vị hơn.
Cảm ơn bạn đã theo dõi bài viết!
Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.
Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.
TỔNG HỢP TÀI LIỆU HỌC LẬP TRÌNH CƠ BẢN CHO NGƯỜI MỚI BẮT ĐẦU
KHOÁ HỌC BOOTCAMP JAVA/JAVASCRIPT/PHP TRỞ THÀNH LẬP TRÌNH VIÊN TRONG 5-6 THÁNG