@@ -72,7 +72,9 @@ static void GetHostname(const FunctionCallbackInfo<Value>& args) {
7272#else // __MINGW32__
7373 int errorno = WSAGetLastError ();
7474#endif // __POSIX__
75- return env->ThrowErrnoException (errorno, " gethostname" );
75+ CHECK_GE (args.Length (), 1 );
76+ env->CollectExceptionInfo (args[args.Length () - 1 ], errorno, " gethostname" );
77+ return args.GetReturnValue ().SetUndefined ();
7678 }
7779 buf[sizeof (buf) - 1 ] = ' \0 ' ;
7880
@@ -87,7 +89,9 @@ static void GetOSType(const FunctionCallbackInfo<Value>& args) {
8789#ifdef __POSIX__
8890 struct utsname info;
8991 if (uname (&info) < 0 ) {
90- return env->ThrowErrnoException (errno, " uname" );
92+ CHECK_GE (args.Length (), 1 );
93+ env->CollectExceptionInfo (args[args.Length () - 1 ], errno, " uname" );
94+ return args.GetReturnValue ().SetUndefined ();
9195 }
9296 rval = info.sysname ;
9397#else // __MINGW32__
@@ -105,7 +109,9 @@ static void GetOSRelease(const FunctionCallbackInfo<Value>& args) {
105109#ifdef __POSIX__
106110 struct utsname info;
107111 if (uname (&info) < 0 ) {
108- return env->ThrowErrnoException (errno, " uname" );
112+ CHECK_GE (args.Length (), 1 );
113+ env->CollectExceptionInfo (args[args.Length () - 1 ], errno, " uname" );
114+ return args.GetReturnValue ().SetUndefined ();
109115 }
110116# ifdef _AIX
111117 char release[256 ];
@@ -242,7 +248,10 @@ static void GetInterfaceAddresses(const FunctionCallbackInfo<Value>& args) {
242248 if (err == UV_ENOSYS) {
243249 return args.GetReturnValue ().Set (ret);
244250 } else if (err) {
245- return env->ThrowUVException (err, " uv_interface_addresses" );
251+ CHECK_GE (args.Length (), 1 );
252+ env->CollectUVExceptionInfo (args[args.Length () - 1 ], errno,
253+ " uv_interface_addresses" );
254+ return args.GetReturnValue ().SetUndefined ();
246255 }
247256
248257 for (i = 0 ; i < count; i++) {
@@ -319,7 +328,9 @@ static void GetHomeDirectory(const FunctionCallbackInfo<Value>& args) {
319328 const int err = uv_os_homedir (buf, &len);
320329
321330 if (err) {
322- return env->ThrowUVException (err, " uv_os_homedir" );
331+ CHECK_GE (args.Length (), 1 );
332+ env->CollectUVExceptionInfo (args[args.Length () - 1 ], err, " uv_os_homedir" );
333+ return args.GetReturnValue ().SetUndefined ();
323334 }
324335
325336 Local<String> home = String::NewFromUtf8 (env->isolate (),
@@ -351,7 +362,10 @@ static void GetUserInfo(const FunctionCallbackInfo<Value>& args) {
351362 const int err = uv_os_get_passwd (&pwd);
352363
353364 if (err) {
354- return env->ThrowUVException (err, " uv_os_get_passwd" );
365+ CHECK_GE (args.Length (), 2 );
366+ env->CollectUVExceptionInfo (args[args.Length () - 1 ], err,
367+ " uv_os_get_passwd" );
368+ return args.GetReturnValue ().SetUndefined ();
355369 }
356370
357371 Local<Value> error;
0 commit comments