에러 다루기: tryCatch :: R 활용 팁 - mindscale
Skip to content

에러 다루기: tryCatch

R에서 경고를 발생시키는 함수는 warning입니다

warning('조심하세요')
for(i in 1:100){
  warning('조심하세요') 
}

반복문 안에서 경고가 발생하더라도 경고 메시지만 보여줄 뿐 계속 실행이 됩니다.

경고가 50개 이상 발생한 경우에는 warnings 함수로 내용을 볼 수 있습니다

warnings()

에러를 발생시키는 함수는 stop입니다

stop('문제가 생겼습니다')

에러가 발생하면 즉시 실행이 멈춥니다.

for(i in 1:10){
  print(i)
  stop('문제가 생겼습니다')
}

만약 함수 안에서 함수를 부르고 이 함수 안에서 에러가 난다면 에러가 발생한 위치를 찾기 위해 traceback 함수를 쓸 수 있습니다

f = function(){ 
  stop('여기에 문제가 있어요') 
}

g = function(){
  f()
}

g()

traceback()

만약 무시하고 싶은 에러가 있다면 try 함수에서 silent 옵션을 TRUE로 해줍니다

try(f(), silent = TRUE)

try 함수를 사용하면 에러가 발생하더라도 무시하고 조용히 계속 실행됩니다

for(i in 1:10){
  print(i)
  try(f(), silent = TRUE)
}

에러를 무시하기는 하되 뭔가 처리를 더해주고 싶을 때는 tryCatch 함수를 사용합니다. 아래와 같이 하면 에러의 내용을 출력만하고 계속 진행합니다

tryCatch(
  f(),
  error = function(e){
    print(e)
 })