Есть ли более короткий способ попробовать Catch ex As Exception в одной строке VB. NET? - PullRequest
1 голос
/ 20 июня 2020

Например, когда мне нужно обработать несколько исключений, путь ниже занимает больше места. Есть ли более короткий способ попробовать Catch ex As Exception в одной строке VB. NET? может быть, что-то вроде Try objSize = obj.Size Catch ex As Exception objSize = 0

Также, если кто-нибудь может поделиться лучшими практиками обработки ошибок в vb. net, это было бы очень полезно. Спасибо.

Try
    objSize = obj.Size
Catch ex As Exception
    objSize = 0
End Try

Ответы [ 3 ]

1 голос
/ 20 июня 2020

Здесь есть очень хорошая дискуссия в комментариях к этому вопросу, и все подняли важные вопросы.

Код сгенерирует исключение только в том случае, если получение размера объекта вызовет исключение. Единственное, что вы сделаете, если это вызовет исключение, - это установить размер на 0. Er go, вы должны просто сделать object.Size return 0, если он собирался генерировать исключение. Лучше всего не бросать ненужные исключения, потому что они дороги.

Однако вы можете объявить подпрограмму, которая принимает в качестве параметров другие подпрограммы: которые вы ранее пытались поймать, в качестве подпрограмм:

Dim objSize = 0

TryCatch(Sub() objSize = obj.Size, Sub() objSize = 0)

Или вы можете использовать c#;)

0 голосов
/ 20 июня 2020

Ответ на вопрос, как это сделать, - вообще не использовать блок try catch.

objSize = If(obj?.Size, 0)

Все ли, что вам нужно в данном случае.

Если вы этого не сделаете. Если нравится синтаксис, то есть

objSize =(obj?.Size).GetValueOrDefault

В любом случае блоки try catch предназначены для восстановления после неизвестных ошибок, а не тех, с которыми можно легче справиться, просто изменив внешний вид кода.

0 голосов
/ 20 июня 2020

Вот пример одной строки Попробуйте .. Catch

Try : objSize = obj.Size : Catch ex As Exception : objSize = 0 : End Try

Мне просто интересно, как вы собираетесь отлаживать свой код, если это только идет так же в более крупном приложении?!

...