投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/3/11 13:06:31
「e.ThrowException = True」という代入操作は例外を発生させないので、
御提示のコードで Catch 句が呼ばれることは無いですよ。


e.ThrowException は、「イベントを抜けた後で、例外を発生させるかどうか」を意味しています。
True をセットしておいた場合は、例外がスローされます。

False をセットしておいた場合、エラーメッセージは出ないので、
 そのままエラーメッセージを握りつぶす
 MessageBox 等を使って表現する
 Label 等にエラー情報を記述する
 該当セルの ErrorTextプロパティにエラーテキストをセットする
などのようにして、自前の復帰処理に差し替えてください。


実際のエラー内容は、e.Exception という読み取り専用プロパティにて保持されています。
エラーが発生した時の状態は e.Context が返すビットフラグで判定できます。

また、e.Cancel を True に変更することで、入力中の内容をキャンセルして、
編集前の状態に戻すこともできます。
https://dobon.net/vb/dotnet/datagridview/dataerror.html