Merge pull request #76 from sunyc/master

3.0-alpha2
use try/catch instead of SETJMP/LONGJMP
"%"text is one token in c++ so "%"PRId64 doesn't work needs a space, braindead
Revert "use try/catch instead of SETJMP/LONGJMP"

This reverts commit 3b541a07ee292c22ed5a72b5fdee0d4e9a1b794e.
Revert "Revert "use try/catch instead of SETJMP/LONGJMP""

This reverts commit 13817f17adb1461ef7afda52dd166436dd20a76c.
Fix build after switching to c++ compile.