例外処理機構
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 03:18 UTC 版)
Smalltalk にも例外処理機構が存在する。こちらも、その他の構文と同じくメッセージ式とブロックによって実現されている。例外処理は次の様に記述する。 [[Exception signal: '処理失敗'. "例外発生"]ensure:["例外の有無に関わらず実行したい処理"].]on: Exception "補足する例外の種類"do:[ :exception |"例外を補足した際の処理"]. なお#ensure:は後述のブロックによる資源の開放があるため多用されることはない。 例外の制御はメッセージ送信毎に連結リストとして積み上げられたコンテキスト情報の末端のコンテキスト(メソッドスタック)を表す thisContext オブジェクトを操作し、コンテキストを巻き戻す事で実現されている。複数の例外は、#on:do:on:do・・とon:do:を繰り返し(処理系が定義している限りの数で)記述して補足する事もできるが、次の様に例外の型を,で並べて補足する事も出来る。 [Notification signal: '接続準備完了'. ]on: Error, Notificationdo:[ :exception |"エラーと通知両方の例外を1度に補足"]. なお、Smalltalkでは正常な結果を返せないエラー(間違い)と通知両方を合わせたものが例外である。例外は正常な戻り値を返せない場合と割り込みの様に非同期な通知に利用される。
※この「例外処理機構」の解説は、「Smalltalk」の解説の一部です。
「例外処理機構」を含む「Smalltalk」の記事については、「Smalltalk」の概要を参照ください。
- 例外処理機構のページへのリンク