[R] help: error handling in try
jim holtman
jholtman at gmail.com
Thu Sep 11 03:15:22 CEST 2008
It does not "stop" the program. It generates an "error" message which
is caught by 'try' from which you can do a recovery. The purpose of
'stop' is to cause the 'try' to catch it and return the error message
as the result and you can test the class for being 'try-error'.
On Wed, Sep 10, 2008 at 9:11 PM, Andy Zhu <andyzhu35 at yahoo.com> wrote:
> Thanks, Jim:
>
> One of the purpose of this function is to try not to stop the program and generate T/F result for further process. Actually find fix by myself with tryCatch (but don't know why try doesn't work). The modified function handles potential Date and yearmon in Zoo classes.
>
> is.Date=
> # adate: a scalar value
> # fun: the date function object
> # format: the designated date format to date function
> function(adate,fun,format) {
> ret=NA;
> error.old=geterrmessage();
> .Internal(seterrmessage('no error'));
> temp=tryCatch(fun(adate,format),
> error=function(e) {
> .Internal(seterrmessage('error'))
> }
> );
> error=geterrmessage();
> if (error=='error') {
> ret=F;
> } else {
> if (is.na(temp)) {
> ret=F;
> } else {
> ret=T;
> }
> }
> .Internal(seterrmessage(error.old));
> return(ret);
> }
>
> adate='12/2000';
> fun=as.Date;
> format='%b %Y';
>
> is.Date(adate,fun,format); # false
>
> library(zoo);
> fun=as.yearmon;
> format='%m/%Y';
>
> is.Date(adate,fun,format); # true
>
> Cheer.
>
> --- On Wed, 9/10/08, jim holtman <jholtman at gmail.com> wrote:
> From: jim holtman <jholtman at gmail.com>
> Subject: Re: [R] help: error handling in try
> To: andyzhu35 at yahoo.com
> Cc: r-help at r-project.org
> Date: Wednesday, September 10, 2008, 8:11 AM
>
> Why don't you use 'try' in this fashion:
>
>> f.error <- function(x) if (x == 1) stop('error')
>>
>> value <- try(f.error(1))
> Error in f.error(1) : error
>> if (inherits(value, 'try-error')) cat("Got this error:",
> value) else print ("no error")
> Got this error: Error in f.error(1) : error
>> value <- try(f.error(0)) # no error
>> if (inherits(value, 'try-error')) cat ("Got this
> error:", value) else print("no error")
> [1] "no error"
>>
>>
>
>
> On Tue, Sep 9, 2008 at 8:56 PM, Andy Zhu <andyzhu35 at yahoo.com> wrote:
>> First time to post and searched archive for this problem with no clue. My
> version is 2.5.1.
>>
>> Below is a function to check if a given date is a valid date to a given
> date function object. It uses try (also tried tryCatch but with same problem).
> When given an invalid date, I am hoping try will generate en error message which
> would be picked up by the geterrmessage and thus expecting a false result. but
> this is not the case when it is inside a function. However, if simply run the
> body of function, the ret is indeed a false value. Why are they different?
>>
>> Many thanks
>>
>>
>> is.Date=
>> # adate: a scalar value
>> # fun: the date function object
>> # format: the designated date format to date function
>> function(adate,fun,format) {
>> ret=NA;
>> error.old=geterrmessage();
>> .Internal(seterrmessage('no error'));
>> try(fun(adate,format),silent=T);
>> error=geterrmessage();
>> if (error=='no error') {
>> ret=T;
>> } else {
>> ret=F;
>> }
>> .Internal(seterrmessage(error.old));
>> return(ret);
>> }
>>
>> adate='12/2000';
>> fun=as.Date;
>> format='%b %Y';
>>
>> is.Date(adate,fun,format) # returns true which is not correct.
>>
>> ret=NA;
>>
>> error.old=geterrmessage();
>>
>> .Internal(seterrmessage('no error'));
>>
>> try(fun(adate,format),silent=T);
>>
>> error=geterrmessage();
>>
>> if (error=='no error') {
>>
>> ret=T;
>>
>> } else {
>>
>> ret=F;
>>
>> }
>>
>> .Internal(seterrmessage(error.old));
>>
>>
>> ret # shows false which is correct
>>
>>
>>
>>
>> [[alternative HTML version deleted]]
>>
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem that you are trying to solve?
>
>
>
>
> [[alternative HTML version deleted]]
>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?
More information about the R-help
mailing list