Само присвоение не может выдать исключение, но могут быть задействованы преобразования, индексаторы, получатели свойств и доступы сеттеров или членов. Но это, скорее всего, означает, что у вас есть программная ошибка, которую вы должны исправить.
Вы должны выполнять обработку исключений только для реальных проблем времени выполнения. В основном связанные с вводом / выводом вещи, но также и API, которые предназначены для использования в определенных условиях. Не выполняйте обработку исключений для ошибок программирования!
Оператор присваивания не может быть перегружен.
Пример ошибки программирования:
int[] array = GetArray();
for (int i = 1; i <= array.Length; i++) {
Console.WriteLine(array[i]);
}
Это будетбросить IndexOutOfBoundsException
, потому что диапазон индекса изменяется от 0
до array.Length - 1
.
Правильный код:
int[] array = GetArray();
for (int i = 0; i < array.Length; i++) { // Note: starting at 0 and using < instead of <=
Console.WriteLine(array[i]);
}
Пример, где вы можете получить исключение справильный код -
File.WriteAllText(path, contents);
Файл может быть заблокирован другим приложением, или диск не подключен, или у вас могут быть недостаточно прав и т. д.
Здесь try-catch
подходит.