에러 다루기: 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)
})