Exception

0th

Percentile

The Exception class to be thrown and caught

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.

Keywords
classes, methods, programming, error
Usage
Exception(..., sep="", collapse=", ")
Arguments
...
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.
Fields and Methods

Methods:

as.character
Gets a character string representing of the Exception.
getCall -
getCalls
Gets the active calls saved when the exception was created.
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: abort, as.character, conditionCall, conditionMessage, print Methods inherited from Object: $, $<-, [[, [[<-, as.character, attach, attachLocally, clearCache, clearLookupCache, clone, detach, equals, extend, finalize, getEnvironment, getFieldModifier, getFieldModifiers, getFields, getInstantiationTime, getStaticInstance, hasField, hashCode, ll, load, names, objectSize, print, save

See Also

See also tryCatch() (and try()).

Aliases
  • Exception
Examples

######################################################################
# 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="")

Documentation reproduced from package R.oo, version 1.20.0, License: LGPL (>= 2.1)

Community examples

Looks like there are no examples yet.