Tiêu đề gốc: " Giới thiệu tối giản về Solidity: 15. 》
Tác giả gốc: 0xAA "Giới thiệu tối giản" dành cho người mới bắt đầu (chuyên gia lập trình có thể tìm hướng dẫn khác), với 1-3 bài giảng được cập nhật mỗi tuần.
Tất cả mã và hướng dẫn đều là nguồn mở trên github: github.com/AmazingAng/WTFSolidity
Ở đây Trong bài giảng đầu tiên, chúng tôi giới thiệu ba phương pháp ném ngoại lệ trong độ rắn: lỗi, yêu cầu và khẳng định, đồng thời so sánh mức tiêu thụ gas của ba phương pháp.
Ngoại lệ
Lỗi thường xảy ra khi viết hợp đồng thông minh. Lệnh ngoại lệ trong Solid giúp chúng ta gỡ lỗi.
Lỗi
Lỗi là một bổ sung mới cho phiên bản Solidity 0.8, tiện lợi và hiệu quả (Tiết kiệm xăng) và giải thích cho người dùng lý do thao tác không thành công. Người ta có thể xác định các trường hợp ngoại lệ bên ngoài hợp đồng. Tiếp theo, chúng tôi xác định một ngoại lệ TransferNotOwner. Khi người dùng cố gắng chuyển tiền khi họ không phải là chủ sở hữu mã thông báo, một lỗi sẽ được đưa ra:
Trong quá trình thực thi, có lỗi phải phù hợp với lệnh hoàn nguyên (tua lại) được sử dụng.
Chúng ta xác định hàm transferOwner1(), hàm này sẽ kiểm tra xem chủ sở hữu token có phải là người khởi tạo hay không. Nếu không, nó sẽ ném TransferNotOwner ngoại lệ; nếu vậy, việc chuyển giao sẽ diễn ra.
Yêu cầu
Lệnh require là một phương pháp phổ biến để đưa ra các ngoại lệ trước phiên bản Solidity 0.8. Hiện tại, nhiều phiên bản chính thống hợp đồng Vẫn sử dụng nó. Nó rất dễ sử dụng, hạn chế duy nhất là gas tăng theo độ dài của chuỗi mô tả ngoại lệ, cao hơn lệnh lỗi. Cách sử dụng: require (kiểm tra điều kiện, "mô tả ngoại lệ"), khi điều kiện kiểm tra không được thiết lập, một ngoại lệ sẽ được đưa ra.
Chúng ta sử dụng lệnh require để viết lại hàm transferOwner ở trên:
Khẳng định
Lệnh khẳng định thường được các lập trình viên sử dụng để viết các bản sửa lỗi chương trình, vì nó không thể giải thích lý do ném ra các ngoại lệ (ít chuỗi hơn yêu cầu). Cách sử dụng của nó rất đơn giản, khẳng định (kiểm tra điều kiện), khi điều kiện kiểm tra không được thiết lập sẽ đưa ra một ngoại lệ.
Chúng ta sử dụng lệnh khẳng định để viết lại hàm transferOwner ở trên:
So sánh khí của ba phương pháp
Hãy so sánh mức tiêu thụ gas của ba ngoại lệ được ném ra. Phương pháp này rất đơn giản. Triển khai hợp đồng và chạy ba phiên bản của hàm transferOwner đã viết.
phương pháp lỗi mức tiêu thụ gas: 24445phương pháp yêu cầu mức tiêu thụ gas: 24743phương pháp xác nhận mức tiêu thụ gas: 24446
Chúng ta có thể thấy rằng phương thức lỗi có chi phí gas ít nhất, tiếp theo là khẳng định và phương thức yêu cầu tiêu tốn nhiều gas nhất! Vì vậy, lỗi không chỉ có thể thông báo cho người dùng lý do ném ngoại lệ mà còn tiết kiệm xăng, mọi người nên sử dụng nhiều hơn!
Tóm tắt
Trong bài giảng này, chúng tôi giới thiệu ba phương pháp loại bỏ ngoại lệ của Solidity: lỗi, yêu cầu và khẳng định, đồng thời so sánh mức tiêu thụ gas của ba phương pháp. Kết luận: lỗi không chỉ có thể thông báo cho người dùng lý do ném ngoại lệ mà còn tiết kiệm xăng.
Liên kết gốc
Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:
Nhóm Telegram đăng ký: https://t.me/theblockbeats
Nhóm Telegram thảo luận: https://t.me/BlockBeats_App
Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia
