Просто бросьте все что угодно, если сообщение об ошибке полезно для разработчика. Этот класс исключений никогда не должен происходить за пределами разработки.
Я не знаю, как это сделать без BindingSource, вот как это сделать с одним:
var drv = bindingSoure1.Current as DataRowView;
if (drv != null)
var row = drv.Row as MyRowType;
DataRowView currentDataRowView = (DataRowView)dgv1.CurrentRow.DataBoundItem
DataRow row = currentDataRowView.Row
Вы должны иметь возможность напрямую преобразовать выбранную строку в строго типизированную строку, которая была привязана к DataGridView.