Exception {R.oo} | R Documentation |
Package: R.oo
Class Exception
Object
~~|
~~+--
try-error
~~~~~~~|
~~~~~~~+--
condition
~~~~~~~~~~~~|
~~~~~~~~~~~~+--
error
~~~~~~~~~~~~~~~~~|
~~~~~~~~~~~~~~~~~+--
simpleError
~~~~~~~~~~~~~~~~~~~~~~|
~~~~~~~~~~~~~~~~~~~~~~+--
Exception
Directly known subclasses:
InternalErrorException, RccViolationException, RdocException
public static class Exception
extends simpleError
Creates an Exception that can be thrown and caught. The Exception
class is the root class of all other Exception
classes.
Exception(..., sep="", collapse=", ")
... |
One or several strings, which will be concatenated and contain informative message about the exception. |
sep |
The string to used for concatenating several strings. |
collapse |
The string to used collapse vectors together. |
Methods:
as.character | Gets a character string representing of the Exception. | |
getCall | - | |
getLastException | Static method to get the last Exception thrown. | |
getMessage | Gets the message of the Exception. | |
getStackTrace | Gets the stack trace saved when the exception was created. | |
getStackTraceString | Gets the stack trace as a string. | |
getWhen | Gets the time when the Exception was created. | |
print | Prints the Exception. | |
printStackTrace | Prints the stack trace saved when the exception was created. | |
throw | Throws an Exception that can be caught. |
Methods inherited from error:
as.character, throw
Methods inherited from condition:
as.character, conditionCall, conditionMessage, print
Methods inherited from Object:
$, $<-, [[, [[<-, as.character, attach, attachLocally, clearCache, clone, detach, equals, extend, finalize, gc, getEnvironment, getFields, getInstantiationTime, getStaticInstance, hasField, hashCode, ll, load, objectSize, print, registerFinalizer, save
Henrik Bengtsson (http://www.braju.com/R/)
See also tryCatch()
(and try
()).
###################################################################### # 1. To catch a regular "error" exception thrown by e.g. stop(). ###################################################################### x <- NA y <- NA tryCatch({ x <- log(123); y <- log("a"); }, error = function(ex) { print(ex); }) print(x) print(y) ###################################################################### # 2. Always run a "final" expression regardless or error or not. ###################################################################### filename <- tempfile("R.methodsS3.example") con <- file(filename) tryCatch({ open(con, "r"); }, error = function(ex) { cat("Could not open ", filename, " for reading.\n", sep="") }, finally = { close(con) cat("The id of the connection is ", ifelse(is.null(con), "NULL", con), ".\n", sep="") }) ###################################################################### # 3. Creating your own Exception class ###################################################################### setConstructorS3("NegativeLogValueException", function( msg="Trying to calculate the logarithm of a negative value", value=NULL) { extend(Exception(msg=msg), "NegativeLogValueException", .value = value ) }) setMethodS3("as.character", "NegativeLogValueException", function(this, ...) { paste(as.character.Exception(this), ": ", getValue(this), sep=""); }) setMethodS3("getValue", "NegativeLogValueException", function(this, ...) { this$.value; }) mylog <- function(x, base=exp(1)) { if (x < 0) throw(NegativeLogValueException(value=x)) else log(x, base=base) } # Note that the order of the catch list is important: l <- NA; x <- 123; tryCatch({ l <- mylog(x); }, NegativeLogValueException = function(ex) { cat(as.character(ex), "\n") }, "try-error" = function(ex) { cat("try-error: Could not calculate the logarithm of ", x, ".\n", sep="") }, error = function(ex) { cat("error: Could not calculate the logarithm of ", x, ".\n", sep="") }) cat("The logarithm of ", x, " is ", l, ".\n\n", sep="")