asp.net – 试试Catch块没有捕获?

我有一个简单的函数,它试图从Obout网格过滤器列中获取一个值,如果该值为空,则忽略它并继续.由于某种原因,此代码忽略了我的catch块,并在输入字符串为空时始终显示System.FormatException!

更奇怪的是,如果我使用visual studio的调试器并在该行上设置断点,catch块正常运行(在我继续该行之后).我已经确认了我的Debug |例外|抛出时CLR不会被设置为捕获.我也在生产版本中确认了这种相同的行为.

'Get the month selected
    Dim MonthSelected As Integer
    Try
        MonthSelected = CInt(DateCreatedColumn.FilterCriteria.Value)
    Catch ex As Exception
        'If value is empty / not a number reset the filter
        DateCreatedColumn.FilterCriteria.FilterExpression = String.Empty
        Return
    End Try

最佳答案 我认为发生这种情况的原因是因为你不能将一个空值转换为Int,所以在catch有机会获得异常之前,转换失败了.

除此之外,我认为你需要重写这段代码.将Exception用作流量控制的一部分并不是一个好主意.例外是计算上昂贵的,并且只应在特殊情况下使用.根据定义,您可以计划和编制的案例并非例外.使用if语句来检查空值等,不要使用异常.

点赞