【发布时间】:2016-01-07 19:41:24
【问题描述】:
这是我执行的代码:
B::B(Ptr* myPtr)
: A( myPtr!=nullptr ? myPtr->someFunction()
: throw std::invalid_argument("Invalid_argument") )
, localPtr_(myPtr)
{}
所以,我的类是以指针作为参数构造的。如果这个指针是 nullptr 我想抛出一个 Invalid Argument 异常。
我主要有:
A* myAobject = new B(nullptr);
所以,我期望编译器抛出异常,然后调用所创建对象的析构函数。
但我明白了:
terminate called after throwing an instance of 'std::invalid_argument'
what(): Invalid_argument
Aborted (core dumped)
如果我尝试:gdb ./main core.main 我明白了:
Program terminated with signal SIGABRT, Aborted.
#0 0x00007fe14f81bcc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
Traceback (most recent call last):
File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux- gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named 'libstdcxx'
我不明白为什么...你能帮帮我吗?
【问题讨论】: