This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Source for wiki ExceptionTaxonomies version 2

author

aag

comment

Added R6RS I/O conditions.  Renamed GNU/MIT Scheme to MIT/GNU Scheme.

ipnr

71.139.36.79

name

ExceptionTaxonomies

readonly

0

text

= Condition/Exception Taxonomies =

This page lists the condition/exception system taxonomies for several Scheme implementations and SRFIs and for R6RS.

== Bigloo ==
{{{
  &exception
    &error
      &http-error
        &http-redirection-error
        &http-status-error
      &io-error
        &io-file-not-found-error
        &io-malformed-url-error
        &io-parse-error
        &io-port-error
          &io-closed-error
          &io-read-error
          &io-write-error
        &io-unknown-host-error
      &process-exception
      &type-error
    &http-redirection
    &warning
      &eval-warning
}}}

== Chez Scheme ==
{{{
  &condition
    &irritants
    &message
    &serious
      &violation
        &assertion
        &implementation-restriction
          &no-infinities
          &no-nans
        &lexical
        &non-continuable
        &syntax
        &undefined
      &error
        &i/o
          &i/o-port
            &i/o-decoding
            &i/o-encoding
          &i/o-read
          &i/o-write
          &i/o-invalid-position
          &i/o-filename
            &i/o-file-already-exists
            &i/o-file-does-not-exist
            &i/o-file-protection
              &i/o-file-is-read-only
    &warning
    &who
}}}

== Gambit ==

  Gambit doesn't have a hierarchy, but it does have a set of standard
  exceptions.
{{{
  heap-overflow-exception
  stack-overflow-exception

  no-such-file-or-directory-exception
  os-exception
  unbound-os-environment-variable-exception

  abandoned-mutex-exception
  deadlock-exception
  join-timeout-exception
  scheduler-exception
  started-thread-exception
  terminated-thread-exception
  uncaught-exception

  cfun-conversion-exception
  multiple-c-return-exception
  sfun-conversion-exception

  datum-parsing-exception

  expression-parsing-exception
  unbound-global-exception

  divide-by-zero-exception
  improper-length-list-exception
  range-exception
  type-exception

  keyword-expected-exception
  nonprocedure-operator-exception
  number-of-arguments-limit-exception
  unknown-keyword-argument-exception
  wrong-number-of-arguments-exception

  error-exception
}}}

== Gauche ==
{{{
  <condition>
    <compound-condition>
    <message-condition>
      <error>
        <io-error>
          <port-error>
            <io-closed-error>
            <io-read-error>
            <io-unit-error>
            <io-write-error>
        <read-error>
        <system-error>
        <unhandled-signal-error>
    <serious-condition>
      <serious-compound-condition>
}}}

== Guile ==

  Guile implements SRFI 18, SRFI 34, and R6RS exceptions.

== Ikarus ==

  Ikarus implements R6RS exceptions.

== Kawa ==

  Kawa gets its taxonomy of exceptions from Java.

== Larceny ==

  Larceny implements R6RS exceptions.

== MIT/GNU Scheme ==
{{{
  serious-condition
    error
      simple-error
      illegal-datum
        wrong-type-datum
          wrong-type-argument
          wrong-number-of-arguments
        datum-out-of-range
          bad-range-argument
        inapplicable-object
      file-error
        file-operation-error
        derived-file-error
      port-error
        derived-port-error
      variable-error
        unbound-variable
        unassigned-variable
      arithmetic-error
        divide-by-zero
        floating-point-overflow
        floating-point-underflow
      control-error
        no-such-restart
      not-loading
      primitive-procedure-error
        system-call-error
    warning
      simple-warning
    simple-condition
    breakpoint
}}}

== Racket ==
{{{
  exn
    exn:break
    exn:fail
      exn:fail:contract
        exn:fail:contract:arity
        exn:fail:contract:divide-by-zero
        exn:fail:contract:non-fixnum-result
        exn:fail:contract:continuation
        exn:fail:contract:variable
      exn:fail:filesystem
        exn:fail:filesystem:exists
        exn:fail:filesystem:version
      exn:fail:network
      exn:fail:out-of-memory
      exn:fail:read
        exn:fail:read:eof
        exn:fail:read:non-char
      exn:fail:syntax
      exn:fail:unsupported
      exn:fail:user
}}}

== R6RS ==
{{{
  &condition
    &irritants
    &message
    &serious
      &error
        &i/o
          &i/o-filename
            &i/o-file-already-exists
            &i/o-file-does-not-exist
            &i/o-file-protection
              &i/o-file-is-read-only
          &i/o-invalid-position
          &i/o-port
            &i/o-decoding
            &i/o-encoding
          &i/o-read
          &i/o-write
      &violation
         &assertion
         &non-continuable
         &implementation-restriction
         &lexical
         &syntax
         &undefined
    &warning
    &who
}}}

== Scheme48 ==

  Scheme48 implements SRFI 34, SRFI 35, and SRFI 36.

== SCM ==

  SCM doesn't have an exception system, although it does have a way of handling the following exceptions reported by C code:
{{{
  alarm-interrupt
  arithmetic-error
  end-of-program
  out-of-storage
  profile-alarm-interrupt
  thrashing
  user-interrupt
  virtual-alarm-interrupt
}}}

== Scsh ==

  Scsh has no condition system.  It does include an exception system for handling errors reported by Unix system calls.

== SISC ==

  SISC gets its taxonomy of exceptions from Java.  It also implements SRFI 18, SRFI 34, and SRFI 35.

== SRFI 12: Exception Handling ==

  Any object can be used to represent a condition in this system.  There is no standard taxonomy of conditions, but there are two types of condition for which special support is included:
{{{
  composite condition
  property condition
}}}

== SRFI 18: Multithreading support ==
{{{
  abandoned-mutex-exception
  join-timeout-exception
  terminated-thread-exception
  uncaught-exception
}}}

== SRFI 34: Exception Handling for Programs ==

  No condition taxonomy is defined.  However, it does refer to SRFI 35 and SRFI 36.

== SRFI 35: Conditions ==
{{{
  &condition
    &message
    &serious
      &error
}}}

== SRFI 36: I/O Conditions ==
{{{
  &error
    &i/o-error
      &i/o-filename-error
        &i/o-file-already-exists-error
        &i/o-file-protection-error
          &i/o-file-is-read-only-error
        &i/o-malformed-filename-error
        &i/o-no-such-file-error
      &i/o-port-error
        &i/o-closed-error
        &i/o-read-error
        &i/o-write-error
  &read-error
}}}

== STklos ==

  STklos supports SRFI 34, SRFI 35, and SRFI 36.

time

2010-08-29 23:52:07

version

2