R6RS:翻訳:Standard Libraries:7.3 Standard condition types

R6RS:翻訳:Standard Libraries:7.3 Standard condition types

7.3. 標準コンディション型

[condition type] &message

[procedure] (make-message-condition message)

[procedure] (message-condition? obj)

[procedure] (condition-message condition)

このコンディション型は次のように定義することができる。

(define-condition-type &message &condition
  make-message-condition message-condition?
  (message condition-message))

この型はコンディションの性質のもっと詳細なメッセージを人間に届ける。

[condition type] &warning

[procedure] (make-warning)

[procedure] (warning? obj)

このコンディション型は次のように定義することができる。

(define-condition-type &warning &condition
  make-warning warning?)

この型は原則的には後続のプログラムの実行を即座に禁じるものではないが後でプログラムを実行することを妨げることもある。

[condition type] &serious

[procedure] (make-serious-condition)

[procedure] (serious-condition? obj)

このコンディション型は次のように定義することができる。

(define-condition-type &serious &condition
  make-serious-condition serious-condition?)

この型は安全に無視することはできないほど十分深刻なコンディションを記述する。このコンディション型は主に他のコンディション型のスーパータイプとして意図されている。

[condition type] &error

[procedure] (make-error)

[procedure] (error? obj)

このコンディション型は次のように定義することができる。

(define-condition-type &error &serious
  make-error error?)

この型はエラーを記述する。典型的には外の世界やユーザーとプログラムの相互作用がうまくいかないことで発生するエラーを記述する。

[condition type] &violation

[procedure] (make-violation)

[procedure] (violation? obj)

このコンディション型は次のように定義することができる。

(define-condition-type &violation &serious
  make-violation violation?)

この型は典型的にはプログラミングエラーによって発生する言語標準違反やライブラリ標準違反を記述する。

[condition type] &assertion

[procedure] (make-assertion-violation)

[procedure] (assertion-violation? obj)

このコンディション型は次のように定義することができる。

(define-condition-type &assertion &violation
  make-assertion-violation assertion-violation?)

この型は手続きに不正な個数の引数や誤った型の引数を渡すような不正な呼び出しを記述する。

[condition type] &irritants

[procedure] (make-irritants-condition irritants)

[procedure] (irritants-condition? obj)

[procedure] (condition-irritants condition)

このコンディション型は次のように定義することができる。

(define-condition-type &irritants &condition
  make-irritants-condition irritants-condition?
  (irritants condition-irritants))

irritants はオブジェクトのリストでなければいけない。このコンディションはコンディションの付加的な情報を提供する。典型的には例外を検知した手続きの引数のリストである。

この型のコンディションはレポートのセクション R6RS:翻訳:R6RS:11.14 Errors and violations の errro 手続きと assertion-violation 手続きによって生成される。

[condition type] &who

[procedure] (make-who-condition who)

[procedure] (who-condition? obj)

[procedure] (condition-who condition)

このコンディション型は次のように定義することができる。

(define-condition-type &who &condition
  make-who-condition who-condition?
  (who condition-who))

who はシンボルか文字列でありその例外をレポートした実体を識別する。 この型のコンディションは R6RS:翻訳:R6RS:11.14 Errors and violations の errro 手続きと assertion-violation 手続き、それと syntax-violation 手続き(R6RS:翻訳:Standard Libraries:12.9 Syntax violations)によって生成される。

[condition type] &non-continuable

[procedure] (make-non-continuable-violation)

[procedure] (non-continuable-violation? obj)

このコンディション型は次のように定義することができる。

(define-condition-type &non-continuable &violation
  make-non-continuable-violation
  non-continuable-violation?)

この型は raise から呼び出された例外ハンドラが return したことを示す。

[condition type] &implementation-restriction

[procedure] (make-implementation-restriction-violation)

[procedure] (implementation-restriction-violation? obj)

このコンディション型は次のように定義することができる。

(define-condition-type &implementation-restriction
  &violation
  make-implementation-restriction-violation
  implementation-restriction-violation?)

この型は仕様によって許されている実装上の制限、例えば NaN や無限の表現に関するものに違反したことを記述する。(R6RS:翻訳:Standard Libraries:11.3 Flonums

[condition type] &lexical

[procedure] (make-lexical-violation)

[procedure] (lexical-violation? obj)

このコンディション型は次のように定義することができる。

  (define-condition-type &lexical &violation
    make-lexical-violation lexical-violation?)

この型はデータ構文のレベルの構文違反を記述する。

[condition type] &syntax

[procedure] (make-syntax-violation form subform)

[procedure] (syntax-violation? obj)

[procedure] (syntax-violation-form condition)

[procedure] (syntax-violation-subform condition)

このコンディション型は次のように定義することができる。

 (define-condition-type &syntax &violation
   make-syntax-violation syntax-violation?
   (form syntax-violation-form)
   (subform syntax-violation-subform))

この型は構文違反を記述する。 form はエラーのあった構文オブジェクトもしくは間違ったフォームのコードを表現したデータでなければならない。 subform は任意のオブジェクトで違反をもっと正確に指摘する構文オブジェクトか間違ったフォームである。 #f にすることでもっと精確な情報がないことを示すこともできる。

[condition type] &undefined

[procedure] (make-undefined-violation)

[procedure] (undefined-violation? obj)

このコンディション型は次のように定義することができる。

(define-condition-type &undefined &violation
  make-undefined-violation undefined-violation?)

この型はプログラム中の未束縛識別子を記述する。


図 7.1 標準コンディション型の階層


Last modified : 2008/04/13 09:24:16 UTC