[R] How to catch an error using try
mailinglist.honeypot at gmail.com
Mon Aug 3 18:05:43 CEST 2009
On Aug 3, 2009, at 11:53 AM, <mauede at alice.it> wrote:
> Sometimes the following function call causes a database exception:
>> gene.seq <- getSequence (id=gene.map[,"ensembl_transcript_id"],
> + seqType="3utr", mart=hmart)
> I understand the above function must be called by try to capture the
> eventual error.
> WHat is not clear to me is how to realize that an error has
> occurred. The on-line documentation
> mentions an invisible object of class "try-error".
> How shall I test whetehr such object has been created or not ?
> I assume it is created whenever an error does occur ....?
By "invisible" object, the documentation is saying that it's returning
an object via the "invisible" function (see ?invisible). The object is
no longer invisible if the function is called and the return value is
assigned to a variable: which you are doing in your case.
In your case, you just have to check to see if the object returned by
getSequence is a (or inherits from) the "try-error" class. The last
line of the help in ?try actually shows you how to do that. Here's a
R> m <- matrix(1:100, 10, 10)
R> a <- try(m[,5]) # no error
 41 42 43 44 45 46 47 48 49 50
R> b <- try(m[,11]) # error here
 "Error in try(m[, 11]) : subscript out of bounds\n"
To programmatically test if b is an error:
R> is(b, 'try-error')
R> > inherits(b, 'try-error') # used in last line of ?try
Graduate Student: Computational Systems Biology
| Memorial Sloan-Kettering Cancer Center
| Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact
More information about the R-help