There are two questions actually. Is it ok to use goto operators, that leads outside try/catch block and what consequences may it lead to? How can I make this code better? start: try { oleDbDataAdapter1.Fill(dataSetRTTCExcel3.main as DataTable); } catch (Exception ex) { DialogResult res = MessageBox.Show("Can't load data:\n" + ex.Message, "Error", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); if (res == DialogResult.Retry) { goto start; } }