相关疑难解决方法(0)

我为什么不在"尝试" - "捕获"中包裹每个块?

我一直认为,如果一个方法可以抛出一个异常,那么不顾及用一个有意义的try块来保护这个调用.

我刚刚发布了' 你应该总是包装可以抛出try,catch块的调用.'对这个问题,并被告知这是'非常糟糕的建议' - 我想明白为什么.

c++ java exception-handling exception try-catch

424
推荐指数
11
解决办法
6万
查看次数

获取当前VBA功能的名称

对于错误处理代码,我想获取发生错误的当前VBA函数(或子)的名称.有谁知道如何做到这一点?

[编辑]谢谢大家,我曾希望存在一个无证的技巧来自我确定功能,但这显然不存在.猜猜我会继续使用我当前的代码:

Option Compare Database: Option Explicit: Const cMODULE$ = "basMisc"

Public Function gfMisc_SomeFunction$(target$)
On Error GoTo err_handler: Const cPROC$ = "gfMisc_SomeFunction"
    ...
exit_handler:
    ....
    Exit Function
err_handler:
    Call gfLog_Error(cMODULE, cPROC, err, err.Description)
    Resume exit_handler
End Function
Run Code Online (Sandbox Code Playgroud)

ms-access vba

30
推荐指数
5
解决办法
4万
查看次数

我们需要为每个子例程创建一个错误处理程序吗?

我从SO复制一段代码作为例子.子例程包含错误处理程序.是否应该为所有Subs制作错误处理程序?

Public Sub SubA()
  On Error Goto ProcError

  Connection.Open
  Open File for Writing
  SomePreciousResource.GrabIt

ProcExit:  
  Connection.Close
  Connection = Nothing
  Close File
  SomePreciousResource.Release

  Exit Sub

ProcError:  
  MsgBox Err.Description  
  Resume ProcExit
End Sub
Run Code Online (Sandbox Code Playgroud)

顺便说一下,如何做一个子程序内部的控制流时,代码执行遇到Exit Sub,End SubResume?当它遇到诸如ProcError:执行期间的标签时,它是执行它还是跳过它?

error-handling vba program-flow

5
推荐指数
2
解决办法
1万
查看次数

处理数学函数中的错误

数学相关函数中错误处理的好习惯是什么?我正在建立一个专门的函数库(模块),我的主要目的是让调用这些函数的代码更容易调试 - 而不是制作一个闪亮的用户友好的错误处理工具.

下面是VBA中的一个简单示例,但我也有兴趣听取其他语言的说法.我不太确定我应该在哪里返回错误消息/状态/标志.作为额外的论点?

Function AddArrays(arr1, arr2)
    Dim i As Long
    Dim result As Variant

    ' Some error trapping code here, e.g.
    ' - Are input arrays of same size?
    ' - Are input arrays numeric? (can't add strings, objects...)
    ' - Etc.

    ' If no errors found, do the actual work...
    ReDim result(LBound(arr1) To UBound(arr1))
    For i = LBound(arr1) To UBound(arr1)
        result(i) = arr1(i) + arr2(i)
    Next i

    AddArrays = result
End Function
Run Code Online (Sandbox Code Playgroud)

或类似以下内容.该函数返回一个布尔"成功"标志(如下例所示,如果输入数组不是数字等,则返回False),或者某个其他类型的错误号/消息.

Function AddArrays(arr1, arr2, result) As …
Run Code Online (Sandbox Code Playgroud)

math error-handling vba

3
推荐指数
1
解决办法
2129
查看次数