mtext - r axis



R에서 함수와 try() (1)

여전히 오류 처리와 함께 R과 어려움을 겪고 있습니다.

내가 사용하는 경우 :

result <- try(sqlSave(ch,df,tablename="tblTest"))

나는 다음을 사용할 수있다 :

if (class(result) != "try-error")

무엇인가 잘못되었는지 확인합니다. 문제 없어.

그러나 내가 예상했던대로 작동하지 않는 함수와 결합하여 사용하면 :

 result <- try(ch<-odbcConnect("TEST"))

result "-1"을, class(result) "정수"를 준다.

그래서 내가 사용해야합니까?

ch<-odbcConnect("TEST")
if (ch != -1)

오류 메시지에 대해 geterrmessage() 를 사용 geterrmessage() ?


밀접하게 오류 메시지를 odbcConnect 가 경고를 표시하는 것을 볼 수 있습니다. 오류는 ODBC 드라이버에 의해 생성되며 try 의미에서 오류가 아닙니다 ( geterrmessage() 도 작동하지 않음).

이것을 처리하기 위해 tryCatch 를 사용할 수 있습니다 (예 :

tryCatch(odbcConnect("TEST"), warning=function(w) print("FAIL!"))

좀 더 설명 :
-1은 odbcDriverConnect 함수의 결과입니다. 코드를 보면 라인이 있습니다.

stat <- .Call(C_RODBCDriverConnect, as.character(connection), 
        id, as.integer(believeNRows), as.logical(readOnlyOptimize))
if (stat < 0L) {
     warning("ODBC connection failed")
     return(stat)
}

따라서 오류없이 (그리고 경고와 함께) 그리고 C 레벨의 정수 코드로 끝납니다. 실제로이 코드는 연결이 성공했을 때 반환됩니다 (그러나 그 다음은 1입니다). 오류가없는 경우 결과 클래스는 try-error 될 수 없습니다 .
try 및 함수에는 문제가 없지만이 특정 함수 ( odbcDriverConnect ) odbcDriverConnect 됩니다.

당신은 물론 당신의 예제 에서처럼이 행동을 사용할 수있다.

ch <- odbcConnect("TEST")
if (ch != -1)

tryCatch 할 수 있습니다.

tryCatch(ch<-odbcConnect("TEST"), warning=function(w) print("FAIL!"))

성공하면 ch 변수를 만들고 실패하면 메시지를 출력합니다.
또는

ch <- tryCatch(odbcConnect("TEST"), warning=function(w) {print("FAIL!");return(NA)})

항상 ch 변수를 생성하지만 실패한 경우 NA 값이 있습니다.





error-handling