表达式计算器类的设计5(面向对象的表达式计算器8)

计算器的github下载地址:https://github.com/ljian1992/calculator

概述

表达式计算器的类基本已经设计完成了,由于在程序运行的时候总会有这样那样的异常,例如:a +2, a没有初始化,对于异常的管理一般而言是需要自定义异常类。这个自定义异常类也是在继承了系统已经定义好的exception类,然后再重新定义内容。

 

异常的种类

语法异常---->SyntaxError类

赋值时左操作数不是变量:1 = 2;

缺少括号:1 + (2*2

不认识的函数:

函数缺少括号:sin(20

符号表中不存在的符号:

输入一个变量但没有设置它的值:a 回车

不是表达式:)1-2

文件读写异常---->FileStreamError类

文件读异常

文件写异常

除零异常--->DevisorZero类

加载时与存储的版本号不一致--->VersionUnMatch类

 

现在已经有了需要自定义的异常类,为了方便管理,再设置一个Exception的基类用于继承。所以类图就变成这个样子了

clip_image001

 

Exception类、SyntaxError类、FileStreamError类、DevisorZero类、VersionUnMatch类的设计

Exception类

class Exception : public std::exception
{
private:
    std::string message_;                           //异常信息
    
public:
    explicit Exception(const char* message)  //char *类型赋值给string类型,printf(%s)会出问题,而用cout不会    
        : message_(message) {}
    explicit Exception(const std::string& message)     
        : message_(message) {}   virtual ~Exception() throw() {}
    virtual const char * what() const throw();     //获取异常信息
};

 

SyntaxError类

class SyntaxError : public Exception
{
public:
    explicit SyntaxError(const char* message)
        : Exception(message) {}   explicit SyntaxError(const std::string& message)
        : Exception(message) {}   virtual ~SyntaxError() throw(){}
};

 

FileStreamError类

class FileStreamError : public Exception
{
public:
    explicit FileStreamError(const char* message)
        : Exception(message) {}   explicit FileStreamError(const std::string& message)
        : Exception(message) {}   virtual ~FileStreamError() throw() {}
};

 

DevisorZero类

class DevisorZero : public Exception
{
public:
    explicit DevisorZero(const char* message)
        : Exception(message) {}   explicit DevisorZero(const std::string& message)
        : Exception(message) {}   virtual ~DevisorZero() throw() {}
};

 

VersionUnMatch类

class VersionUnMatch : public Exception
{
public:
    explicit VersionUnMatch(const char* message)
        : Exception(message) {}   explicit VersionUnMatch(const std::string& message)
        : Exception(message) {}   virtual ~VersionUnMatch() throw() {}
};

转载于:https://www.cnblogs.com/Ljian1992/p/4292311.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值