diff options
author | Aaron <aaron@10gen.com> | 2010-09-07 16:46:08 -0700 |
---|---|---|
committer | Aaron <aaron@10gen.com> | 2010-09-07 16:46:08 -0700 |
commit | 8d11f130ede389f39fdeeb75b9cc700ed300de4c (patch) | |
tree | fd255e7f6a2a4fa5178151a1c3c046dc88956b7d /scripting | |
parent | 4aa83fac62ff5162d76beba9d62f5da6d1513d13 (diff) | |
download | mongo-8d11f130ede389f39fdeeb75b9cc700ed300de4c.tar.gz |
SERVER-1749 catch exception in get next callback
Diffstat (limited to 'scripting')
-rw-r--r-- | scripting/v8_db.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/scripting/v8_db.cpp b/scripting/v8_db.cpp index e1788755042..2ccca1c7c0c 100644 --- a/scripting/v8_db.cpp +++ b/scripting/v8_db.cpp @@ -367,15 +367,19 @@ namespace mongo { } v8::Handle<v8::Value> internalCursorNext(const v8::Arguments& args){ - mongo::DBClientCursor * cursor = getCursor( args ); - if ( ! cursor ) - return v8::Undefined(); - BSONObj o; - { - v8::Unlocker u; - o = cursor->next(); + try { + mongo::DBClientCursor * cursor = getCursor( args ); + if ( ! cursor ) + return v8::Undefined(); + BSONObj o; + { + v8::Unlocker u; + o = cursor->next(); + } + return mongoToV8( o ); + } catch ( ... ) { + return v8::ThrowException( v8::String::New( "unexpected exception in internalCursorNext()" ) ); } - return mongoToV8( o ); } v8::Handle<v8::Value> internalCursorHasNext(const v8::Arguments& args){ |