Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Nắm vững các ngoại lệ tùy chỉnh trong Ruby:Nâng cao khả năng xử lý và quan sát lỗi

Tùy chỉnh các ngoại lệ thường không phải là mối quan tâm chung trong quá trình phát triển phần mềm. Nhưng nếu bạn gặp lỗi trong công cụ quan sát và không thể xác định chính xác và nhanh chóng vấn đề, bạn có thể cần thêm thông tin và chi tiết về một ngoại lệ.

Bài viết này sẽ chỉ cho bạn cách tùy chỉnh các ngoại lệ trong Ruby và giảm thiểu các sự cố tiềm ẩn trong tương lai do thiếu thông tin lỗi.

Hãy đi thẳng vào vấn đề!

Ghi chú nhanh

Bài đăng này là một tiến trình tự nhiên đối với Gỡ lỗi trong Ruby bằng AppSignal, vì vậy chúng tôi khuyên bạn nên đọc bài đăng đó trước để có cái nhìn tổng quan về cách gỡ lỗi và giới thiệu về các ngoại lệ tùy chỉnh.

Cách giải cứu ngoại lệ với Ruby

Ruby có một lớp tên là Exception , từ đó các lớp xử lý lỗi kế thừa. Trong phần này, chúng ta sẽ hiểu rõ hơn về luồng ngoại lệ cấu trúc của Ruby trước khi tạo ngoại lệ tùy chỉnh.

Exception là lớp ngoại lệ chính trong Ruby và rescue Exception sẽ bắt tất cả các ngoại lệ được kế thừa từ Exception . Cách tốt nhất không phải là sử dụng tính năng này trong ứng dụng của chúng tôi vì nó sẽ bắt được tất cả các ngoại lệ được Ruby sử dụng nội bộ.

Cách dễ nhất để giải quyết một ngoại lệ trong Ruby là tạo begin ... rescue khối mã như ví dụ dưới đây:

 

Kể từ Exception sẽ bắt được tất cả các ngoại lệ, chúng ta nên cố gắng sử dụng một cái gì đó cụ thể hơn để lọc và chỉ nhận được lỗi mà chúng ta muốn. Một ví dụ là StandardError class, một trình giải cứu tiêu chuẩn được sử dụng để bắt các ngoại lệ liên quan đến lỗi mã ứng dụng bằng cách bỏ qua các ngoại lệ nội bộ của Ruby.

Để bắt được StandardException , bạn có thể sử dụng ví dụ bên dưới:

 

Hoặc, nếu không có lớp ngoại lệ nào được nêu, Ruby sẽ trả về các ngoại lệ được xử lý bởi StandardException lớp học.

 

Để tạo một ngoại lệ tùy chỉnh với Ruby, có thể bạn sẽ tạo một lớp kế thừa từ StandardError . Chúng tôi sẽ đề cập đến vấn đề đó trong một số phần tiếp theo.

Để tìm hiểu thêm về các ngoại lệ và tìm ra ngoại lệ tốt nhất để kế thừa, hãy kiểm tra danh sách ngoại lệ của Ruby.

Thêm thông tin bổ sung vào ngoại lệ Ruby

Tạo một ngoại lệ mới mà không gửi thông tin liên quan sẽ không giúp ích hiệu quả trong việc gỡ lỗi - xác định và khắc phục - sự cố. Bạn cần thêm chi tiết lỗi. Ở đây, chúng ta sẽ xem cách chuyển thông tin từ các đối tượng sang ngoại lệ tùy chỉnh.

Hãy tạo một ngoại lệ tùy chỉnh mới chỉ để nhận dữ liệu mà chúng tôi muốn đăng nhập. Như đã đề cập ở phần trước, ngoại lệ tùy chỉnh cần kế thừa từ StandardError .

Bạn có thể sử dụng một dự án Rails đơn giản để kiểm tra việc triển khai này. Tạo một thư mục mới có tên exceptions bên trong app thư mục và một lớp có tên custom_exception.rb trong dự án Rails của bạn.

 

Trong lớp ngoại lệ này, chúng tôi có thể xác định tất cả thông tin cần hiển thị trong nhật ký và chúng tôi sử dụng bốn thuộc tính cho dữ liệu của mình:

  • mã liệt kê ngoại lệ
  • một cái tên
  • một thông báo thông tin
  • chi tiết thông tin nội bộ về ngoại lệ đã được Ruby cung cấp

Và bây giờ chúng ta tạo một begin...rescue khối để nâng CustomException và chuyển các tham số tới các thuộc tính ngoại lệ.

 

Điều này có vẻ hữu ích, vì vậy hãy tiếp tục triển khai và sử dụng dữ liệu này để tùy chỉnh nhật ký ngoại lệ.

Mở rộng ngoại lệ trong Ruby

Việc mở rộng một ngoại lệ cho phép chúng tôi nâng cao khả năng tùy chỉnh lên mức cụ thể hơn và có thể tái sử dụng. Giống như Ruby có một số ngoại lệ đối với các loại lỗi khác nhau, chúng tôi cũng có thể tuân theo dòng lập trình này trong hệ thống của mình.

Tiếp theo, hãy tìm hiểu cách ghi đè ngoại lệ của chúng ta và sử dụng nó trong ngữ cảnh cần gia hạn.

Tìm kiếm thông tin trong nhật ký là một hoạt động khó khăn. Các nhà phát triển thường tự trách mình vì đã không đưa thêm thông tin về lỗi hoặc cách tìm kiếm và lọc. Nếu bạn không sử dụng bất kỳ công cụ giám sát nào cung cấp chức năng này thì việc bao gồm cả dữ liệu có ý nghĩa có thể giúp bạn tiết kiệm trong tương lai gần.

Mẹo chuyên nghiệp :Xem phần 'Gỡ lỗi ngoại lệ trong Ruby bằng AppSignal' trong bài đăng Gỡ lỗi trong Ruby bằng AppSignal của chúng tôi để biết thông tin về cách thiết lập và theo dõi các ngoại lệ tùy chỉnh trong AppSignal.

Trong ví dụ dưới đây, chúng tôi sẽ tùy chỉnh hiển thị các ngoại lệ trong nhật ký. Ban đầu, bạn có thể nghĩ rằng đó chỉ là một cách nhẹ nhàng và đẹp mắt để hiển thị dữ liệu. Tuy nhiên, các từ khóa được sử dụng trong dữ liệu là chìa khóa để tìm ra lỗi và giúp đỡ những người giám sát ứng dụng.

Thêm đá quý colorize vào dự án của bạn bằng cách đưa mã bên dưới vào Gemfile của bạn.

 

Chạy gói để cài đặt đá quý colorize và khởi chạy ứng dụng Rails của bạn.

 

Bây giờ, trong lớp ngoại lệ của bạn, hãy nhập gem. In các thuộc tính theo cách có định dạng để dễ nhìn và nhanh chóng tìm ra lỗi quan trọng.

 

Hãy xem kết quả của việc tùy chỉnh hình ảnh này và thử nghiệm một số tùy chọn để tạo định dạng và phong cách của bạn.

Nắm vững các ngoại lệ tùy chỉnh trong Ruby:Nâng cao khả năng xử lý và quan sát lỗi

Kết thúc và các bước tiếp theo

Trong bài đăng này, chúng tôi đã đề cập đến cách tùy chỉnh và đánh dấu một ngoại lệ Ruby trong nhật ký của bạn. Có thể thực hiện nhiều tùy chỉnh khác, nhưng điều quan trọng nhất là bạn xử lý các ngoại lệ có liên quan đến ứng dụng của mình. Và hãy nhớ, đừng áp dụng cùng một kiểu định dạng cho tất cả các ngoại lệ, như Rails đã làm.

Chúc bạn viết mã vui vẻ!

Tái bút. Nếu bạn muốn đọc các bài đăng của Ruby Magic ngay khi chúng được đăng tải, hãy đăng ký nhận bản tin Ruby Magic của chúng tôi và không bao giờ bỏ lỡ một bài đăng nào!

Nắm vững các ngoại lệ tùy chỉnh trong Ruby:Nâng cao khả năng xử lý và quan sát lỗi

Brena Monteiro

Tác giả khách mời Brena là Trưởng nhóm công nghệ đam mê cố vấn cho các nhà phát triển mới và có kinh nghiệm trong việc phát triển cũng như lãnh đạo các nhóm có hiệu suất cao. Cô ấy có kinh nghiệm trong việc xây dựng các API có thể mở rộng và tích hợp giữa các dịch vụ đám mây, rất nhiệt tình với kiến trúc tiến hóa và là Người học việc về Thực tế Mở rộng (XR).

Tất cả bài viết của Brena Monteiro