Ошибка (bug) — здесь нет исключений:
decimal Умножить(decimal множитель1, decimal множитель2)
{
// программист перепутал операторы
return множитель1 + множитель2;
}
Ошибки допускаются, находятся и исправляются.
Исключение (exception) — здесь нет ошибок:
string ReadFileTextUtf8(string fileName)
{
if (String.IsNullOrEmpty(fileName))
throw new ArgumentNullException("fileName");
return File.ReadAllText(fileName, Encoding.UTF8);
}
Исключения выбрасываются (throw) и обрабатываются (handle) — с помощью catch (выборочная обработка) либо finally (финальная обработка).
Во избежание путаницы, английское "error" лучше вообще не употреблять. Как правило, люди, использующие "error", плохо понимают, о чём говорят.