jwatte:/tmp> cat foo.cpp
#include <stdexcept>
#include <stdio.h>
int main() {
try {
throw std::runtime_error("hello, world");
}
catch (std::exception &re) {
fprintf(stderr, "%s\n", re.what());
}
return 0;
}
jwatte:/tmp> g++ -o foo foo.cpp
jwatte:/tmp> ./foo
terminate called after throwing an instance of 'std::runtime_error'
terminate called recursively
Aborted
jwatte:/tmp> g++ -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ./configure --prefix=/usr
Thread model: posix
gcc version 4.2.0
Why?
Note that changing the catch to a std::runtime_error &, or const &, doesn't change the behavior. Even a ... doesn't help.
🎉 Celebrating 25 Years of GameDev.net! 🎉
Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!
g++ 4.2.0 and throwing exceptions not catching
This shell transcript should pretty much tell the story:
I tested Ubuntu Gutsy's 4.2.1 rather than 4.2.0 without reproducing the problem. So, I'm unsure.
nav@seeker:/tmp$ cat foo.cpp#include <stdexcept>#include <stdio.h>int main() { try { throw std::runtime_error("hello, world"); } catch (std::exception &re) { fprintf(stderr, "%s\n", re.what()); } return 0;}nav@seeker:/tmp$ g++-4.2 -o foo foo.cpp nav@seeker:/tmp$ ./foo hello, worldnav@seeker:/tmp$ gcc-4.2 -vUsing built-in specs.Target: i486-linux-gnuConfigured with: ../src/configure -v--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr--enable-shared --with-system-zlib --libexecdir=/usr/lib--without-included-gettext --enable-threads=posix --enable-nls--with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2--enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-targets=all--disable-werror --enable-checking=release --build=i486-linux-gnu--host=i486-linux-gnu --target=i486-linux-gnuThread model: posixgcc version 4.2.1 20070627 (prerelease) (Ubuntu 4.2-20070627-1ubuntu1)
ice@SirGalahad:~/coding$ g++ except.cpp -o exceptice@SirGalahad:~/coding$ ./excepthello, worldice@SirGalahad:~/coding$ g++ -vUsing built-in specs.Target: x86_64-linux-gnuConfigured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release x86_64-linux-gnuThread model: posixgcc version 4.1.2 (Ubuntu 4.1.2-0ubuntu4)ice@SirGalahad:~/coding$
Dunno what your problem is...
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement