R的例外處理:本範例設計了一個function,內部使用tryCatch函數,用來處理型態轉換產生的問題,進行測試。
Convert.stringToInt <- function(str)
{
#例外處理參考來源:http://mazamascience.com/WorkingWithData/?p=912
tryCatch( #注意C為大寫
{
if(str == "0")
{
stop("can not input zero") #故意產生例外,並自行產生錯誤訊息
}
else {
if(typeof(as.numeric(str)) == "double") #將字串轉為數字
{
return(as.numeric(str))
}
}
}
,warning = function(war)
{
print(paste("ting's warning:", war));
}
,error = function(err)
{
print(paste("ting's error:",conditionMessage(err) )) #用來取得原始的錯誤訊息
}
,finally ={
print("ting's finally");
}
)
}
Convert.stringToInt("1");
Convert.stringToInt("0")
Convert.stringToInt("Ting");
執行結果如下圖:
> Convert.stringToInt("1");
[1] "ting's finally"
[1] 1
> Convert.stringToInt("0")
[1] "ting's error: can not input zero"
[1] "ting's finally"
> Convert.stringToInt("Ting");
[1] "ting's warning: simpleWarning in doTryCatch(return(expr), name, parentenv, handler): NAs introduced by coercion\n"
[1] "ting's finally"
>