wiki:ExceptionTaxonomies

Version 3 (modified by cowan, 7 years ago) (diff)

Added Chicken information

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

Chicken

Chicken supports SRFI-12.

  exn
    arity
    type
    arithmetic
    i/o)
      file
      net
    bounds
    runtime
      limit
    match
    syntax

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.