I’m doing a simple UDP “send” using Node’s inbuilt datagram UDP socket :
http://nodejs.org/docs/v0.3.1/api/dgram.html
The destination of the message is a domain name that has to be resolved by DNS before transmission.. node.js handles this.
In the event that DNS resolution fails dgram throws a “ENOTFOUND Domain Not Found” error and passes it to the callback that I’ve registered.
My code is like this:
client = dgram.createSocket("udp4");
client.send(message,
0,
message.length,
this.port,
this.address,
function(err, bytes) {
if (err) {
//get rid of error??
}
}
);
client.close();
I’m not particularly interested in the error.. if it fails, it fails, its not important to the business rules of the application. I’ll log it to console for completeness.. BUT I cant stop this exception walking back up the stack and bringing down the application. How do I handle this error?
I dont wish to put a global uhandled exception handler in place just for this. I’ve tried rethrowing the error inside the callback within a Try/Except handler.. that didn’t work.
Any thoughts?
Thanks for reading.
You need to listen for an
errorevent from the socket. If you don’t, then node will convert this to an exception. Do not try to handle this withuncaughtException, because the only safe thing to do fromuncaughtExceptionis log then exit.Here is an example of listening for
errorand causing an intentional DNS error:This should print:
And the program will continue running.