c# - How to test statements individually rather than a block of code using Try-Catch? -
the code below fail because bind() called on socket has not been "prepared", though there code prepare socket. code prepares socket out of scope (another try block).
// prepare socket try { socket = new socket(endpoint.addressfamily, sockettype.stream, protocoltype.tcp); } catch (exception e) { log.write("socket preparation failed"); } { if (socket != null) { socket.shutdown(socketshutdown.both); socket.close(); } } // bind try { socket.bind(endpoint); } catch (exception e) { log.write("bind() failed"); } { if (socket != null) { socket.shutdown(socketshutdown.both); socket.close(); } } // enable listening try { socket.listen(1000); } catch (exception e) { log.write("listen() failed"); } { if (socket != null) { socket.shutdown(socketshutdown.both); socket.close(); } }
here's 1 way write it. finally part of outer scope, while catches in inner scope. i'm throwing after each catch, can handle differently.
note each finally clause executed it's corresponding try clause falls out of scope, not when method exists.
socket socket; try { // prepare socket try { socket = new socket(endpoint.addressfamily, sockettype.stream, protocoltype.tcp); } catch { log.write("socket preparation failed"); throw; } // bind try { socket.bind(endpoint); } catch { log.write("bind() failed"); throw; } // enable listening try { socket.listen(1000); } catch { log.write("listen() failed"); throw; } } { if (socket != null) { socket.shutdown(socketshutdown.both); socket.close(); } }
Comments
Post a Comment