As has been previously mentioned, if an exception is caught and ignored, then it was created and thrown. There is no way to suppress the creation and throw of an exception when an exceptional case has already occurred, however, there are often things you can do to prevent the exceptional case.
In your case, your using a Socket. There are many possible reasons why a SocketException may be thrown...such as trying to read from a closed socket. To prevent the exception from being thrown, you would want to verify that the socket is still open before initiating a read. This will incur the added cost of checking the sockets state before each read, but in the long run, you could likely perform thousands of such checks before you reach the level of overhead that reading from a closed socket and throwing an exception would incur.
In general, performing such checks is just good programming practice. We should be writing code that avoids exceptional cases as much as possible. A classic example of this is checking parameters and other variables for null before accessing methods or properties on them, which avoids the dreaded NullReferenceException (an exception that, in a properly written application, should NEVER be thrown.)
It takes a little time and experience to always be aware of the possible exceptional cases in your code, but if you try to have the presence of mind to think about it, you'll be able to avoid exceptions in most cases by validating your input, recieved data, etc. before using it in a way that will cause an exception.