Следующее консольное приложение VB.NET не скомпилируется, а VS2022 не отображает никаких ошибок/предупреждений:
Module Program
Sub Main()
On Error Resume Next '0
Dim a As String
Dim b = Sub(_a) Console.WriteLine(_a) '1
Dim c = Sub(_a) a = _a '2
End Sub
End Module
Закомментирование строки '0 заставляет программу работать, как и закомментирование '2.
'0 и '1 могут работать вместе, а '0 и '2 — нет.
P.S. Не надо мне говорить, что On Error Resume Next не рекомендуется — я бы не хотел его использовать. Фактически, я лично предпочитаю C# VB.NET.
Я просто экспериментирую с VB, чтобы проиллюстрировать идею о том, что обработка ошибок в стиле Golang с помощью проверок if err != nil читается так же, как устаревший стиль If Err.GetException() IsNot Nothing Then в VB, с активным On Error Resume Next.
@user246821 user246821 На самом деле ошибка компилятора отображается в окне вывода. Он просто не отображается в списке ошибок.





Я просто скопировал ваш код, собрал проект и получил это в окне вывода:
ошибка BC36595: метод не может содержать одновременно оператор «При ошибке возобновить следующий» и определение переменной, которая используется в лямбда-выражении или выражении запроса.
Я недостаточно хорошо знаю внутреннюю работу лямбда-выражений, чтобы точно знать, почему это может быть проблемой, но сообщение об ошибке довольно ясно.
Я думаю, что это может быть ошибка VS2022, которая не отображает это сообщение об ошибке.
@SunshineLi, его может не быть в списке ошибок, потому что они не смогут указать один номер строки. В вашем случае есть три строки, которые создают ошибку в сочетании, и их может быть больше с дополнительными переменными и/или лямбда-выражениями. Вы не видите его в окне вывода или просто не видите в списке ошибок? Я использую VS 2022 v17.10.1.
Ах, я понимаю, он просто не отображается в списке ошибок, но список ошибок привлекал внимание, и я думал, что в нем отображается каждая ошибка… Приятно осознавать, что это может быть не так.
Проверьте настройку «Инструменты => Параметры... => Проекты и решения => Сборка и запуск => Подробность выходных данных сборки проекта MSBuild».