linux 构造函数 throw,构造函数中的throw

public RobotSpeedData(string str)

{

if (StringCheck(str))

{

string s = str.Trim();

s=s.Remove(0, 1);

s=s.Remove(s.Length - 1);

string[] spds = s.Split(',');

Tcp = Convert.ToInt32(spds[0]);

Ori = Convert.ToInt32(spds[1]);

Leax = Convert.ToInt32(spds[2]);

Reax = Convert.ToInt32(spds[3]);

}

else

{

Tcp = 0;

Ori = 0;

Leax = 0;

Reax = 0;

throw new Exception("the str can't convert to RobotSpeedData");

}

}

//这段代码如果进入else中,将不会返回一个为0的新实例

//而是一个null

/网上资料:

构造函数中抛出异常时概括性总结

(1) C++中通知对象构造失败的唯一方法那就是在构造函数中抛出异常;

(2) 构造函数中抛出异常将导致对象的析构函数不被执行;

(3) 当对象发生部分构造时,已经构造完毕的子对象将会逆序地被析构;

(4) 其是还是那句话, “C++的异常处理不会破坏任何一条面向对象的特性!”。

4 关于异常的其他问题

① 过度使用异常 :首先,使用异常很方便,所以程序员一般不再愿意编写处理错误的代码,而仅仅是简简单单的抛出一个异常。这样做是不对的,对于完全已知的错误,应该编写处理这种错误的代码,增加程序的鲁棒性。另外,异常机制的效率很差。

② 将异常与普通错误区分开:对于普通的完全一致的错误,应该编写处理这种错误的代码,增加程序的鲁棒性。只有外部的不能确定和预知的运行时错误才需要使用异常。

③ 异常对象中包含的信息 :一般情况下,异常对象唯一有用的信息就是类型信息。但使用异常带字符串的构造函数时,这个字符串还可以作为额外的信息。调用异常对象的getMessage()、toString()或者printStackTrace()方法可以分别得到异常对象的额外信息、类名和调用堆栈的信息。并且后一种包含的信息是前一种的超集。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值