当前位置: 首页 > article >正文

solidity学习-15异常

异常

异常的作用:用于程序debug
主要有三种抛出异常的方法:

error
require
assert

本章的学习目的:
1了解三种异常的使用。
2区分三种异常的gas fee消耗

手写代码如下

在这里插入图片描述

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

// 定义一个错误
error TransferNotOwner();

contract Errors{
    // 定义一个映射 从256的一个id映射一个地址
    mapping (uint256 => address) private _owners;

    
    function transferowner(uint256 tokenid,address newOwner) public {
        // 如果消息的调用者和该id对应的地址不一样
        // 就抛出一个异常
        if (_owners[tokenid] != msg.sender){
            revert TransferNotOwner();
        }
        // 如果是一样的就可以修改这个id对应的地址
        _owners[tokenid] = newOwner;
    }

    function transferowner2(uint256 tokenid, address newOwner) public {
        require(_owners[tokenid] == msg.sender,"transfer not error");
        _owners[tokenid] = newOwner;
    }

    
    function transferowner3(uint256 tokenid, address newOwner) public {
        assert(_owners[tokenid] == msg.sender);
        _owners[tokenid] = newOwner;
    }
}

教材给出的是error < assert<require
实际标明的是error<require<assert

编译之后部署该合约
在这里插入图片描述
获取到合约地址。
在这里插入图片描述
error提供的错误是这样的,从revert出现的。
在这里插入图片描述
require可以手动写一个错误信息。
在这里插入图片描述
表示error会产生某些错误信息:
// 定义一个错误
error TransferNotOwner(“出现某些错误”);
但是这样去定义也没有其他信息出现,等待下一个样例学习使用吧。


http://www.kler.cn/a/300882.html

相关文章:

  • B站评论系统的多级存储架构
  • 如何制作符合自己设备的FLM下载算法
  • Linux安装Docker教程(详解)
  • 本地部署Web-Check网站检测与分析利器并实现远程访问实时监测
  • 如何使用策略模式并让spring管理
  • 浅谈云计算16 | 存储虚拟化技术
  • 【CSS】 Grid布局:现代网页设计的基石
  • DML(Data Manipulation Language,数据操作语言)
  • Kubernetes上安装Metallb和Ingress并部署应用程序
  • 本地安装Ollama+WebUI
  • 大模型实战教程:使用Langchain与ChatGLM实现本地知识库
  • Linux驱动.之驱动开发思维,设备,驱动,总线分析思想,驱动的分类(字符设备,块设备,网络设备)
  • 多线程和高并发-17题
  • 使用 Homebrew 在 macOS 上安装 Conda
  • flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位
  • 达林顿管阵列ULN2803(8路反向器电路)
  • C++学习笔记(18)
  • java八股!5(线程创建+并发容器+线程锁)
  • react18基础教程系列--packagejson文件分析
  • “人人都是产品经理”到AI产品经理,赶上风口的人都赚到了钱
  • 「iOS学习」——Masonry学习
  • 区块链学习笔记3--以太坊
  • C#在Winform中截图指定控件中的内容生成图像
  • QGis二次开发 —— 3、程序加载栅格tif与矢量shp文件可进行切换控制,可进行导出/导入工程(附源码)
  • 基于SpringBoot+Vue的小区停车场管理系统
  • 机器学习--支持向量机(SVM)