using translates into try-finally block, it doesn't have catch, so you are misunderstanding the article. It will not catch any exception, It will only make sure to dispose the object in case of an exception.
In your case since it a FileNotFound exception, your object will not be initialized.
Your code would translate into something like:
{
TextReader sv = null;
try
{
sv = File.OpenText(@"sv\.sv");
char[] k = { ':' };
lastWsp = sv.ReadLine().Split(k)[1];
}
finally
{
if(sv != null)
sv.Dispose();
}
}
In the above code in case of exception, it will try to dispose your object sv. But the exception will remain unhandled .
Since in your code, the exception is FileNotFound your object sv will remain null (uninitialized) and hence there will be no reason to call Dispose. But imagine if you have valid file path, and you get an exception at sv.ReadLine().Split(k)[1]; then it will dispose your TextReader sv, and that exception will propagate up in the hierarchy because there is no catch block.
usingstatement doesn't handle exceptions. If an exception occurs inside the body of the using, then the TextReader is guaranteed to be Disposed, but the exception will still not be handled.