- [R] error 처리2024년 01월 25일 21시 29분 12초에 업로드 된 글입니다.작성자: Type-유
프로그래밍을 하다보면 에러처리에 대한 내용이 나올 때, 항상 들었던 생각이 '아 이런게 있군...' 이었다. 그러나 그것이 왜 필요한지에 대해 직접 체감한 적은 없었다. 그만큼의 프로젝트를 진행해보지 않아서인지...
사실 아직도 별반 다를바 없는 상황이다. 다만 공부하고 있는 내용의 진도를 나가기 위해서 거쳐가야 하기에 일단은 정리하고 나중에 깨달을 수 있기를 바라는 수밖에;
프로그래밍 시 에러처리를 해야하는 이유에 대해 검색한 결과는 다음과 같다.
서비스의 안정성을 유지하고 예기치 못한 상황에서도 안정적인 사용자 경험을 제공함(출처_https://velog.io/@tsi0521/)
구글에 검색하면 가장 먼저 나오는 내용을 그냥 긁어왔다. 내 식으로 표현을 굳이 바꾸어 보자면
프로그램을 작성할 때 의도한대로 코드가 작동하지 않는 경우나 원치 않는 데이터가 나 몰래 처리되지 않도록, 혹은 발생할것이라고 예상할 수 있는 에러에 대해서 미리 작업을 걸어두는 과정이 필요하기 때문이라고 적을 수 있겠다.
뭐 그게 그 말이지만 하브루타 식 공부가 해보고 싶었다.
아무튼 R에서 예외 처리하는 함수는 try()와 tryCatch() 함수가 있는 모양이다.
우선,
try()함수
try(expr, silent = FALSE, outFile = getOption("try.outFile", default = stderr()))
에러가 발생할 수 있는 작업을 감싸서 프로그램상 에러를 처리할 수 있도록 돕는 함수이다.
silent 인자를 통해 에러 발생을 작업자에게 표시할지를 결정할 수 있다. 만약 silent = True로 하여 표시되지 않아도, 해당 문구('에러가 발생했습니다' 등)가 버퍼에 남아 있어 geterrmessage 함수를 통해 불러올 수 있다고 한다.
> try( + {print('hello') + print(a)} + ) [1] "hello" Error : 객체 'a'를 찾을 수 없습니다 > try( + {print(a) + print('hello')} + ) Error : 객체 'a'를 찾을 수 없습니다
솔직히 이건 어떤 경우에 사용하면 좋을지 마땅히 떠오르지는 않는다.
tryCatch()함수
tryCatch({expr}, warning={...}, error={...}, finally={...})
첫 번째 expr 인자는 위의 try() 함수 내부에 입력하는 내용과 같은 것이다. 다만, tryCatch() 함수는 이 내용이 error에 해당하느냐, warning에 해당하느냐에 따라 각각의 처리를 설정하여 작동시킬 수 있다. 이는 위의 try() 함수보다 유용해보인다. 나중에 쓸 일이 있기를 바란다.
'IT > 프로그래밍 언어' 카테고리의 다른 글
[R] binding & array (1) 2024.01.25 [R] apply() 계열 함수 (1) 2024.01.22 [R] set.seed( )함수, replace = True or Fale (0) 2024.01.22 [R] 조건문 (0) 2024.01.21 [R] 지역 할당과 슈퍼 할당 (1) 2024.01.21 다음글이 없습니다.이전글이 없습니다.댓글