Почему VB.NET не обеспечивает принудительную обработку исключений?
Возможный дубликат:
Почему исключения не проверяются в.NET?
Если я правильно помню, Java обеспечивает перехват и обработку любых исключений, которые может вызвать вызываемый метод. Почему.NET не делает то же самое?
3 ответа
Эта функция в Java известна как проверенные исключения. Андерс, создатель C#, дал интервью, в котором он подробно объяснил, почему они не были включены в C# и, следовательно, VB.Net
Я говорю, следовательно, VB.Net, потому что, если ни C#, ни CLR не включали проверенные исключения, у VB.Net не было никакой причины включать их. VB уже подвергся масштабной трансформации из модели, в которую не вошли исключения. Введение новой модели исключений, которая полностью отличается от остальной части CLR, приведет к неэффективности, создаст путаницу среди пользователей и приведет к большему количеству проблем совместимости между языками.
Я бы посоветовал прочитать статью "Проблема с проверенными исключениями", где Андерс Хейлсберг, ведущий архитектор C#, беседует с Брюсом Эккелем и Биллом Веннерсом о проблемах с версией и масштабируемостью с проверенными исключениями.
Иногда вы не хотите обрабатывать исключение сразу в методе, в котором оно возникает.
Иногда ты ничего не можешь сделать.
Например, если вы извлекаете данные из базы данных и возникает проблема с извлечением данных, уровень доступа к данным может оказаться не лучшим местом для решения этой проблемы. Возможно, было бы лучше разрешить исключению пузыриться на уровне бизнес-логики или уровне презентации, где соответствующая информация может отображаться для пользователя.
В.Net общий подход заключается в обработке исключения, только если вы можете что-то с этим сделать. И довольно часто все, что вы можете сделать, это предоставить пользователю полезную информацию.