當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R assertCondition 斷言錯誤條件


R語言 assertCondition 位於 tools 包(package)。

說明

測試代碼時,僅檢查結果是否正確是不夠的,還要在適當的情況下發出錯誤或警告信號。此處說明的函數為此提供了便利的工具。這三個函數分別檢查對提供的表達式進行求值是否會產生錯誤、警告或指定的條件列表之一。如果斷言失敗,則會發出錯誤信號。

用法

assertError(expr, classes = "error", verbose = FALSE)
assertWarning(expr, classes = "warning", verbose = FALSE)
assertCondition(expr, ..., .exprString = , verbose = FALSE)

參數

expr

未評估的R表達式將通過以下方式求值tryCatch(expr, ..).

classes, ...

character 對應於滿足斷言的條件類的字符串;例如,"error""warning" 。如果未指定任何條件,則任何條件都將滿足斷言。請參閱詳細信息部分。

.exprString

要打印的字符串對應於 expr 。默認情況下,實際的expr將被解析。如果函數提供了要測試的實際表達式,則將被省略。如果從另一個函數調用 assertCondition(),並將實際表達式作為參數傳遞給該函數,則提供解析後的版本。

verbose

如果是 TRUE ,則在滿足條件時打印一條消息。

細節

assertCondition() 使用通用條件機製來檢查計算 expr 時生成的所有條件。無論可能發出什麽其他條件,其中任何提供的條件類的出現都會滿足斷言。

assertError() 是一個用於斷言錯誤的便捷函數;它調用assertCondition()

assertWarning() 斷言將發出警告信號,但不會發出錯誤信號,而即使警告之後出現錯誤,assertCondition(expr, "warning") 也會得到滿足。請參閱示例。

如果滿足斷言,則會以不可見的方式返回所有發出信號的條件對象的列表。有關這些對象的解釋,請參閱conditionMessage。請注意,評估期間發出的所有條件都會返回,無論它們是否在要求範圍內。

例子

  assertError(sqrt("abc"))
  assertWarning(matrix(1:8, 4,3))

  assertCondition( ""-1 ) # ok, any condition would satisfy this

try( assertCondition(sqrt(2), "warning") )
## .. Failed to get warning in evaluating sqrt(2)
     assertCondition(sqrt("abc"), "error")   # ok
try( assertCondition(sqrt("abc"), "warning") )# -> error: had no warning
     assertCondition(sqrt("abc"), "error")
  ## identical to assertError() call above

assertCondition(matrix(1:5, 2,3), "warning")
try( assertCondition(matrix(1:8, 4,3), "error") )
## .. Failed to get expected error ....

## either warning or worse:
assertCondition(matrix(1:8, 4,3), "error","warning") # OK
assertCondition(matrix(1:8, 4, 3), "warning") # OK

## when both are signalled:
ff <- function() { warning("my warning"); stop("my error") }
    assertCondition(ff(), "warning")
## but assertWarning does not allow an error to follow
try(assertWarning(ff()))
    assertCondition(ff(), "error")          # ok
assertCondition(ff(), "error", "warning") # ok (quietly, catching warning)

## assert that assertC..() does not assert [and use *one* argument only]
assertCondition( assertCondition(sqrt( 2   ), "warning") )
assertCondition( assertCondition(sqrt("abc"), "warning"), "error")
assertCondition( assertCondition(matrix(1:8, 4,3), "error"),
                "error")

作者

John Chambers and Martin Maechler

也可以看看

stopwarningsignalConditiontryCatch

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Asserting Error Conditions。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。