So It's ok if i call something like fs.writeFile('some_file', 'data', {encoding: 'utf8', flag : {toString : function(){ throw new Error('oooops');}}}, function(err) { if(err) console.log(err); })
to expect somewhere there would be a resource leak? On Thursday, June 6, 2013 4:30:13 PM UTC+4, Alex Kocharin wrote: > > > Pretty much all asynchronous code with callbacks relies on a fact that > noone throws exceptions here and there. It's simple enough: if there is a > callback, don't throw (unless you're working with domains). > > But nobody really cares about theoretical "stack exceeded" errors, they > are so unlikely to happen with just a few function calls, so it's easier to > forget them until they become an issue somewhere. > > > On Thursday, June 6, 2013 4:08:55 PM UTC+4, Matthew Larionov wrote: >> >> So this code relies on fact there would be no exception in 'writeFile', >> 'fs.write' or any other called function. And if I try to change those, I >> should keep in mind that sometimes I can throw exceptions and sometimes I >> don't, like here: >> >> if (!Buffer.isBuffer(buffer)) { >> // legacy string interface (fd, data, position, encoding, callback) >> callback = arguments[4]; >> position = arguments[2]; >> assertEncoding(arguments[3]); >> >> buffer = new Buffer('' + arguments[1], arguments[3]); >> offset = 0; >> length = buffer.length; >> } >> >> assertEncding throws an error, but you just know that there would be a >> buffer if it is called from 'writeAll'... Is that so? >> >> >> >> >> On Thu, Jun 6, 2013 at 2:36 PM, Ben Noordhuis <in...@bnoordhuis.nl>wrote: >> >>> On Thu, Jun 6, 2013 at 11:51 AM, Matthew Larionov <matth...@gmail.com> >>> wrote: >>> > I was curious what would happen if this exception is being cought. >>> > Wonder what would happen to 'fd' - file descriptor - as far as I know >>> there >>> > is no such thing as garbage collector for file descriptors or any other >>> > resources except memory... >>> > >>> > Do you really don't see any way for exception to be raised? Just have >>> a look >>> > at 'writeAll' function - it's recursive. What would happen if stack is >>> > exceeded? I don't understand javascript well actually, but I thought >>> the >>> > exception would be thrown. >>> >>> The self-recursion only goes one level deep. writeAll() calls itself >>> from inside fs.write(), which is an asynchronous function that runs on >>> a fresh stack. >>> >>> -- >>> -- >>> Job Board: http://jobs.nodejs.org/ >>> Posting guidelines: >>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >>> You received this message because you are subscribed to the Google >>> Groups "nodejs" group. >>> To post to this group, send email to nod...@googlegroups.com >>> To unsubscribe from this group, send email to >>> nodejs+un...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/nodejs?hl=en?hl=en >>> >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "nodejs" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/nodejs/gILn3SPCyx4/unsubscribe?hl=en. >>> To unsubscribe from this group and all its topics, send an email to >>> nodejs+un...@googlegroups.com. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >> -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.