مشخصات مقاله
-
0.0
-
694
-
0
-
0
آموزش مدیریت خطا در سالیدیتی
Solidity توابع مختلفی را برای مدیریت خطا فراهم می کند. به طور کلی وقتی خطایی رخ می دهد، از همان حالت به حالت اولیه برگردانده می شود. بررسی های دیگر برای جلوگیری از دسترسی کد غیرمجاز است. در زیر برخی از روش های مهم مورد استفاده در مدیریت خطا آورده شده است.
Assert (شرط Bool) :
در صورت عدم تحقق شرط، این فراخوانی متد باعث کدگذاری نامعتبر می شود و هر گونه تغییر در State برگردانده می شود. این روش برای خطاهای داخلی استفاده میگردد.
Require (شرط Bool) :
در صورت عدم تحق شرط، این فراخوانی به State اولیه یا همان حالت اولیه برمی گردد. این روش برای خطاهای ورودی یا اجزای خارجی استفاده می گردد.
Require (شرط Bool، String Memory Message) :
در صورت عدم تحقق شرط، این فراخوانی به State اولیه برمی گردد. این روش برای خطاهای موجود در ورودی ها یا اجزای خارجی استفاده می گردد. این گزینه ارائه پیغام سفارشی را فراهم می کند.
()Revert :
این روش اجرا را متوقف می کند و هر گونه تغییر ایجاد شده را به State اولیه بر می گرداند.
Revert (String Memory Reason)
این روش اجرا را متوقف می کند و هرگونه تغییر ایجاد شده را به State اولیه برمی گرداند. این روش گزینه ای را برای ارائه پیغام سفارشی فراهم می کند.
با امتحان کد زیر می توانید با نحوه مدیریت خطا در Solidity آشنا شوید.
pragma solidity ^0.5.0;
contract Vendor {
address public seller;
modifier onlySeller() {
require(
msg.sender == seller,
"Only seller can call this."
);
_;
}
function sell(uint amount) public payable onlySeller {
if (amount > msg.value / 2 ether)
revert("Not enough Ether provided.");
// Perform the sell operation.
}
}
وقتی Revert فراخوانی می شود، داده های هگزادسیمال را به شرح زیر برمی گرداند.
0x08c379a0 // Function selector for Error(string) 0x0000000000000000000000000000000000000000000000000000000000000020 // Data offset 0x000000000000000000000000000000000000000000000000000000000000001a // String length 0x4e6f7420656e6f7567682045746865722070726f76696465642e000000000000 // String data