レスありがとうございます
前レスでは書き忘れてましたがsrはDisposeする前にCloseしてます

srは複数のプロシージャにまたがって使い、それ以外のgやfontについては1つのプロシージャだけで使うので
いろいろ試行錯誤してみた結果

・Catch部分ではエラー発生フラグを立てるだけにする
・Try〜End Tryの後の処理は全部If〜End Ifの中に入れて、エラー発生フラグがFalseの時のみ実行
・プロシージャの最後でgとfontをDispose
・エラー発生フラグが立ってたらMe.Close()
・クラス内にFormClosedイベントプロシージャを追加し、そのプロシージャ内でsrをClose→Dispose

という記述に変えたら一応イメージした通りに動作するようになりました
正直腑に落ちない部分は残ってますが・・・
自分としてはMe.Close()が実行されるとその場ですぐ終了処理が行われ、そのプロシージャ内のMe.Close()
以降のコードは無視されるものだと思ってたのですがひょっとして違うんでしょうか?