首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异常处理C++

异常处理C++
EN

Stack Overflow用户
提问于 2012-07-28 08:52:58
回答 2查看 137关注 0票数 0

我该怎么做,

我有一个名为LargeInteger的类,它存储最多20位数。我创建了构造器

代码语言:javascript
复制
LargeInteger::LargeInteger(string number){ init(number); }

现在,如果数字> LargeInteger::MAX_DIGITS (静态常量成员),即20,我不想创建对象并抛出异常。

我创建了一个类LargeIntegerException{ ... };并执行了以下操作

代码语言:javascript
复制
void init(string number) throw(LargeIntegerException);
void LargeInteger::init(string number) throw(LargeIntegerException)
{
    if(number.length > MAX_DIGITS)
    throw LargeIntegerException(LargeIntegerException::OUT_OF_BOUNDS);
    else ......
}

所以现在我修改了构造函数

代码语言:javascript
复制
LargeInteger::LargeInteger(string number)
{ try {init(number);} catch(LargeIntegerExceptione) {...} }

现在我有两个问题

1.如果抛出异常,是否会创建此类的对象?

2.如果上述情况属实,该如何处理?

EN

Stack Overflow用户

发布于 2012-07-28 09:04:36

没有理由在构造函数中捕获异常。您希望构造器失败,因此构造器外部的某些东西必须捕获它。如果构造函数通过异常退出,则不会创建任何对象。

代码语言:javascript
复制
LargeInteger(string num) { init(num); } // this is just fine.
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11697315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档