加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:45:41 所属栏目:asp.Net 来源:网络整理
导读:我有一个简单的函数,它试图从Obout网格过滤器列中获取一个值,如果该值为空,则忽略它并继续.由于某种原因,此代码忽略了我的catch块,并在输入字符串为空时始终显示System.FormatException! 更奇怪的是,如果我使用visual studio的调试器并在该行上设置断点,cat
我有一个简单的函数,它试图从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语句来检查空值等,不要使用异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读