Javascript chia cho không có ngoại lệ

Lỗi "chia cho 0" trong lập trình ai cũng biết. Trong các ngôn ngữ cấp thấp, nó khiến chương trình bị lỗi và khởi động lại. Khi những người khác thất bại, JavaScript tiếp tục hoạt động

console.log(1 / 0); // ?

Hãy thử thực thi mã này trong bảng điều khiển trình duyệt của bạn. Bạn sẽ thấy

Infinity + 4; // Infinity
Infinity - 4; // Infinity
Infinity * Infinity; // Infinity
1 hiển thị trên màn hình của mình. Đối với những người đã nghiên cứu sâu hơn về toán học (xin chào, các chuyên gia toán học. ), đây không phải là một bất ngờ. Chia cho số không tạo ra vô hạn. Vô cực trong JavaScript là một số thực và bạn có thể thực hiện nhiều thao tác khác nhau với nó. Trong các bài toán hàng ngày, điều này không có ý nghĩa gì, vì hầu hết các phép toán với vô cực đều kết thúc bằng vô cực, ví dụ, khi chúng ta thêm một số vào vô cùng, chúng ta sẽ nhận được vô cùng

Infinity + 4; // Infinity
Infinity - 4; // Infinity
Infinity * Infinity; // Infinity

Tuy nhiên, có một số ví dụ khi cần đến vô cực. Câu hỏi này được thảo luận chi tiết hơn trên Hexlet

Hướng dẫn

In tổng các số vô hạn chia hết cho 10

Bài tập không vượt qua kiểm tra. phải làm gì?

Nếu bạn gặp bế tắc, đã đến lúc đặt câu hỏi của bạn trong «Thảo luận». Làm thế nào để đặt một câu hỏi một cách chính xác

  • Hãy chắc chắn đính kèm đầu ra thử nghiệm, nếu không có nó thì hầu như không thể tìm ra điều gì đã xảy ra, ngay cả khi bạn hiển thị mã của mình. Các nhà phát triển rất phức tạp khi thực thi mã trong đầu, nhưng có một sai lầm trước mắt họ có lẽ sẽ hữu ích nhất

Trong môi trường của tôi, mã hoạt động, nhưng không phải ở đây 🤨

Các bài kiểm tra được thiết kế để chúng kiểm tra giải pháp theo những cách khác nhau và dựa trên các dữ liệu khác nhau. Thường thì giải pháp hoạt động với một loại dữ liệu đầu vào nhưng không hoạt động với các loại dữ liệu khác. Kiểm tra tab «Kiểm tra» để tìm ra điều này, bạn có thể tìm thấy các gợi ý ở đầu ra lỗi

Mã của tôi khác với mã của giáo viên 🤔

Tốt rồi. 🙆 Một nhiệm vụ trong lập trình có thể được giải quyết theo nhiều cách khác nhau. Nếu mã của bạn vượt qua tất cả các bài kiểm tra, thì mã đó tuân thủ các điều kiện của tác vụ

Trong một số trường hợp hiếm hoi, giải pháp có thể được điều chỉnh để thử nghiệm, nhưng điều này có thể được nhìn thấy ngay lập tức

Tôi đã đọc các bài học nhưng không có gì rõ ràng 🙄

Thật khó để tạo ra những tài liệu giáo dục phù hợp với tất cả mọi người. Chúng tôi cố gắng hết sức nhưng luôn có điều gì đó cần cải thiện. Nếu bạn thấy một tài liệu không rõ ràng đối với bạn, hãy mô tả vấn đề trong “Thảo luận”. Sẽ thật tuyệt nếu bạn viết những điểm chưa rõ ràng trong mẫu câu hỏi. Thông thường, chúng tôi cần một vài ngày để sửa chữa

Nhân tiện, bạn có thể tham gia cải tiến các khóa học. Có một liên kết bên dưới đến mã khóa học bài học mà bạn có thể chỉnh sửa ngay trong trình duyệt của mình

Có ba loại lỗi trong lập trình. (a) Lỗi cú pháp, (b) Lỗi thời gian chạy và (c) Lỗi logic

Lỗi cú pháp

Lỗi cú pháp, còn được gọi là lỗi phân tích cú pháp, xảy ra tại thời điểm biên dịch trong các ngôn ngữ lập trình truyền thống và tại thời điểm phiên dịch trong JavaScript

Ví dụ: dòng sau gây ra lỗi cú pháp vì thiếu dấu ngoặc đơn đóng

Khi một lỗi cú pháp xảy ra trong JavaScript, chỉ mã chứa trong cùng một luồng có lỗi cú pháp bị ảnh hưởng và phần còn lại của mã trong các luồng khác được thực thi giả sử không có gì trong đó phụ thuộc vào mã chứa lỗi

Lỗi thời gian chạy

Lỗi thời gian chạy, còn được gọi là ngoại lệ, xảy ra trong quá trình thực thi (sau khi biên dịch/thông dịch)

Ví dụ: dòng sau gây ra lỗi thời gian chạy vì ở đây cú pháp đúng, nhưng khi chạy, nó đang cố gọi một phương thức không tồn tại

Các ngoại lệ cũng ảnh hưởng đến luồng mà chúng xảy ra, cho phép các luồng JavaScript khác tiếp tục thực thi bình thường

lỗi logic

Lỗi logic có thể là loại lỗi khó theo dõi nhất. Những lỗi này không phải là kết quả của lỗi cú pháp hoặc thời gian chạy. Thay vào đó, chúng xảy ra khi bạn mắc lỗi logic điều khiển tập lệnh của mình và bạn không nhận được kết quả như mong đợi

Bạn không thể bắt những lỗi đó, bởi vì nó phụ thuộc vào yêu cầu kinh doanh của bạn loại logic nào bạn muốn đưa vào chương trình của mình

Sự cố gắng. chụp lấy. cuối cùng Tuyên bố

Các phiên bản mới nhất của JavaScript đã thêm khả năng xử lý ngoại lệ. JavaScript thực hiện thử. chụp lấy. cuối cùng cũng như toán tử ném để xử lý các ngoại lệ

Bạn có thể bắt gặp các ngoại lệ do lập trình viên tạo và thời gian chạy, nhưng bạn không thể bắt lỗi cú pháp JavaScript

Đây là thử. chụp lấy. cú pháp chặn cuối cùng -

Khối thử phải được theo sau bởi chính xác một khối bắt hoặc một khối cuối cùng (hoặc một trong cả hai). Khi một ngoại lệ xảy ra trong khối thử, ngoại lệ đó được đặt trong e và khối bắt được thực thi. Khối cuối cùng tùy chọn thực thi vô điều kiện sau khi thử/bắt

ví dụ

Đây là một ví dụ mà chúng tôi đang cố gắng gọi một chức năng không tồn tại, do đó sẽ đưa ra một ngoại lệ. Hãy để chúng tôi xem nó hoạt động như thế nào mà không cần thử. bắt-

         
            
   
   
   
      

Click the following to see the result:

đầu ra

Bây giờ chúng ta hãy cố gắng nắm bắt ngoại lệ này bằng cách sử dụng try. bắt và hiển thị thông báo thân thiện với người dùng. Bạn cũng có thể chặn thông báo này nếu bạn muốn ẩn lỗi này với người dùng

   
      
      
      
   
   
      

Click the following to see the result:

đầu ra

Bạn có thể sử dụng khối cuối cùng sẽ luôn thực thi vô điều kiện sau lần thử/bắt. Đây là một ví dụ

   
      
      
      
   
   
      

Click the following to see the result:

đầu ra

Tuyên bố ném

Bạn có thể sử dụng câu lệnh ném để tăng ngoại lệ tích hợp hoặc ngoại lệ tùy chỉnh của bạn. Sau đó, những ngoại lệ này có thể được ghi lại và bạn có thể thực hiện hành động thích hợp

Thí dụ

Ví dụ sau minh họa cách sử dụng câu lệnh ném

   
      
      
      
   
   
      

Click the following to see the result:

đầu ra

Bạn có thể đưa ra một ngoại lệ trong một hàm bằng cách sử dụng một chuỗi, số nguyên, Boolean hoặc một đối tượng và sau đó bạn có thể nắm bắt ngoại lệ đó trong cùng một hàm như chúng ta đã làm ở trên hoặc trong một hàm khác bằng cách sử dụng lệnh try. bắt khối

Phương thức onerror()

Trình xử lý sự kiện onerror là tính năng đầu tiên hỗ trợ xử lý lỗi trong JavaScript. Sự kiện lỗi được kích hoạt trên đối tượng cửa sổ bất cứ khi nào có ngoại lệ xảy ra trên trang

   
      
      
      
   
   
      

Click the following to see the result:

đầu ra

Trình xử lý sự kiện onerror cung cấp ba mẩu thông tin để xác định bản chất chính xác của lỗi -

  • Thông báo lỗi - Thông báo tương tự mà trình duyệt sẽ hiển thị cho lỗi đã cho

  • URL - Tệp xảy ra lỗi

  • Số dòng− Số dòng trong URL đã cho gây ra lỗi

Dưới đây là ví dụ cho thấy làm thế nào để trích xuất thông tin này

Thí dụ

Infinity + 4; // Infinity
Infinity - 4; // Infinity
Infinity * Infinity; // Infinity
0

đầu ra

Bạn có thể hiển thị thông tin được trích xuất theo bất kỳ cách nào bạn cho là tốt hơn

Bạn có thể sử dụng phương thức onerror, như hình bên dưới, để hiển thị thông báo lỗi trong trường hợp có bất kỳ sự cố nào khi tải hình ảnh

Chia cho 0 có phải là một cái bẫy?

Khi thực hiện phép chia số nguyên, bộ xử lý sẽ bẫy khi chia cho 0 .

Giá trị của bất kỳ số nguyên nào chia cho 0 là gì?

Việc chia bất kỳ số nguyên nào cho 0 là vô nghĩa .