지금 멈추세요

방어적 R 프로그래밍

Dr. Colin Gillespie

Jumping Rivers

표지판을 보았습니다

가끔은 그냥 고장납니다

  • 오류를 발생시켜야 합니다

예:

1 + "stuff"
Error in 1 + "stuff": non-numeric argument to binary operator
방어적 R 프로그래밍

지금 당장 멈추세요, 감사합니다

오류를 발생시키려면 stop() 함수를 사용합니다

stop("A Euro 1996 error has occurred")
# Error: A Euro 1996 error has occurred
conf_int <- function(mean, std_dev) {
   if(std_dev <= 0) 
       stop("Standard deviation must be positive")

   c(mean - 1.96 * std_dev, mean - 1.96 * std_dev)
}
방어적 R 프로그래밍

잡을 수 있을 때 잡으세요

  • 오류는 억제(무시)할 수 없습니다
    • 오류란 R이 계속 실행할 수 없다는 뜻입니다
    • 대신 오류를 포착합니다

방어적 R 프로그래밍

try() 함수

try() 함수는 suppress()와 조금 비슷하게 동작합니다

res <- try("Scotland" + "World cup", silent = TRUE)

무언가를 시도하고, 실패하면 넘어갑니다

방어적 R 프로그래밍

try() 관용구

res <- try("Scotland" + "World cup", silent = TRUE)
res
[1] 'Error in "Scotland" + "World cup": non-numeric argument to binary operator'
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in "Scotland" + "World cup": 
                            non-numeric argument to binary operator>
방어적 R 프로그래밍

try() 관용구

result <- try("Scotland" + "World cup", silent = TRUE)
class(result)
[1] "try-error"
if(class(result) == "try-error")
  ## Do something useful
방어적 R 프로그래밍

연습해 봅시다

방어적 R 프로그래밍

Preparing Video For Download...