JP3021697B2 - プログラミング言語における例外処理方法 - Google Patents

プログラミング言語における例外処理方法

Info

Publication number
JP3021697B2
JP3021697B2 JP3016725A JP1672591A JP3021697B2 JP 3021697 B2 JP3021697 B2 JP 3021697B2 JP 3016725 A JP3016725 A JP 3016725A JP 1672591 A JP1672591 A JP 1672591A JP 3021697 B2 JP3021697 B2 JP 3021697B2
Authority
JP
Japan
Prior art keywords
frame
exception
argument
error
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP3016725A
Other languages
English (en)
Other versions
JPH04256031A (ja
Inventor
一樹 安松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP3016725A priority Critical patent/JP3021697B2/ja
Publication of JPH04256031A publication Critical patent/JPH04256031A/ja
Application granted granted Critical
Publication of JP3021697B2 publication Critical patent/JP3021697B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はプログラミング言語によ
って構成された複数の関数を順次実行し、これにより通
常処理を行っているに際して、エラーを生じた場合に例
外処理を行うためのプログラミング言語における例外処
理方法に関する。
【0002】
【従来の技術】第4図はプログラミング言語を用いて処
理を行うシステムの概略構成を示しており、このシステ
ムには中央処理装置(CPU)41と、メモリ42が備
えられている。メモリ42は命令コード群43を記憶し
ており、また複数のフレーム44を記憶するためのスタ
ック45を有する。ここで、命令コード群43における
複数の命令コードを組合わせることにより関数が形成さ
れ、中央処理装置41は複数の関数を順次実行すること
により通常の処理を行う。これらの関数が実行される毎
に、スタック45内にフレーム44が逐次形成され、こ
のフレーム44には該フレームより1つ前に形成された
他のフレームをアクセスするためのフレームリンクと、
関数の実行終了時に命令コード群43における戻り先の
命令コードを示すリターンアドレスと、、該関数によっ
て用いられた引数とが書込まれる。ところで、このよう
なシステムにおいては、通常処理を行っているに際して
エラーを生じると、この通常処理のための実行環境、つ
まりスタック45内の各フレーム、中央処理装置41内
のレジスタ(図示せず)に格納されているデータ等をメ
モリ42の所定の領域に一旦退避させ、この後にエラー
に対しての例外処理を行い、エラーが解消された後に元
の実行環境を再現するようにしていた。しかしながら、
実行環境を一旦退避させ、この後にエラーを解消するた
めの例外処理を行う場合は、エラーの発生から例外処理
を行うまでに時間を要するので、必ずしも効率の良い方
法であるとは言えなかった。
【0003】
【発明が解決しようとする課題】このように従来のシス
テムでは、通常処理を行っているに際してエラーを生じ
た場合は、通常処理のための実行環境を一旦退避させ、
この後にエラーを解消するための例外処理を行うように
していたので、エラーの発生から例外処理を行うまでに
時間を要し、よってオーバーヘッドが大きいとう問題点
があった。
【0004】そこで、本発明はエラーが発生すると例外
処理を直ちに行うことができ、よってオーバーヘッドが
小さなプログラミング言語における例外処理方法を提供
することを目的とする。
【0005】
【課題を解決するための手段】本発明ではエラーを示す
第1の引数と、エラーの発生時に実行される例外関数を
示す第2の引数と、通常処理に際して実行される通常関
数を示す第3の引数とを含む例外設定フレームを通常処
理を行う以前に形成しており、前記例外設定フレーム内
の前記第3の引数に対応する通常関数を実行することに
より、1つ前のフレームが前記例外設定フレームである
ことを示す指標をリターンアドレスとして含むフレーム
を形成して、この後に通常処理のための一連の各関数を
順次実行し、こうして行われる通常処理に際してエラー
が発生した場合は、エラー発生時に形成されたフレーム
から1つ前のフレームへと前記フレームリンクに従って
順次遡り、フレーム毎にリターンアドレスが前記指標で
あるか否かを検索し、該指標であるリターンアドレスが
フレームに含まれていれば1つ前のフレームを前記例外
設定フレームであるとみなし、この例外設定フレーム内
の第1の引数を確認して前記第2の引数に対応する前記
例外関数を実行するようにしている。
【0006】
【作用】本発明によれば、通常処理を行う以前に、エラ
ーの発生時に実行される例外関数を示す第2の引数を含
む例外設定フレームを形成しており、通常処理に際して
エラーが発生した場合は、エラー発生時に形成されたフ
レームから例外設定フレームまで遡り、この例外設定フ
レーム内の前記第2の引数に対応する前記例外関数を実
行するようにしているので、通常処理を行うための実行
環境下で例外処理が行われることとなり、このため通常
処理から例外処理へと直ちに移ることができる。
【0007】
【実施例】以下、本発明の実施例を添付図面を参照して
詳細に説明する。
【0008】第1図は本発明に係わる例外処理方法を適
用した実施例における各フレームの構成を示しており、
これらのフレームは第4図に示したシステムにおけるス
タック45内に形成される。
【0009】同図において、例外設定フレーム1は所定
の通常処理を開始するに際し、スタック45内に最初に
形成されるものであって、命令コード群43における例
えば開始アドレス3000の命令コードから開始される例外
設定関数(第2図(a)に示す)を実行することにより
形成される。この例外設定フレーム1には例外つまり発
生したエラーの種類“A”を示す第1の引数11と、こ
のエラーが生じたときに実行される例外関数“handle”
(第2図(b)に示す)の命令コード群43における開
始アドレス2000を示す第2の引数12と、所定の通常処
理を行うための通常関数“do”(第2図(c)に示す)
の命令コード群43における開始アドレス1000を示す第
3の引数13とを含み、さらに該例外設定フレーム1よ
り1つ前のフレームへのポインタを示すフレームリンク
と、該例外設定関数の実行終了時に命令コード群43に
おける戻り先の命令コードを示すリターンアドレスとを
含んでいる。なお、この所定の通常処理を行うに際し、
発生しうるエラーは種類“A”に予め特定されるもので
ある。
【0010】さて、例外設定フレーム1がスタック45
内に形成されると、第3の引数13つまり通常関数“d
o”の命令コード群43における開始アドレス1000がア
クセスされて通常関数が呼出され、これにより通常処理
が開始される。この通常処理の開始に際しては、まず例
外設定フレーム1に引続くフレーム2がスタック45内
に形成される。このフレーム2には例外設定フレーム1
をアクセスするためのポインタを示すフレームリンク
と、予め定められた命令アドレス“3100”を示すリター
ンアドレスとが含まれており、この命令アドレス“310
0”は該フレーム2より1つ前のフレームが例外設定フ
レーム1であることを定義する指標である。
【0011】このフレーム2が形成された後、引続き複
数の通常関数が順次実行されていく。すなわち、1つの
通常関数が実行されると、この通常関数によって次に引
続く通常関数が呼出され、以下同様に通常関数の実行並
びに呼出しが繰り返されることにより通常処理が行われ
ていく。そして、通常関数が実行される毎に、スタック
45内にフレームが逐次形成されることとなる。
【0012】この通常処理に際し、エラーを生じなけれ
ば、例外処理を行うことなく、終了となる。また、エラ
ーを生じた場合には、生じたエラーの種類“A”を示す
信号が中央処理装置41に引渡され、これに応答して中
央処理装置41は第3図に示すフローチャートに示す処
理を行う。なお、このフローチャートの処理も通常関数
として設定されるものであり、このときにはスタック4
5内にフレーム3が形成される。このフレーム3にはエ
ラーの発生を示す引数“error ”を書込んでいる。
【0013】中央処理装置41はエラーの種類“A”を
示す信号を受取ると、フレーム3におけるフレームリン
クに基づいて該フレーム3より1つ前のフレームをアク
セスし、この1つ前のフレームにおけるリターンアドレ
スが予め定められている命令アドレス“3100”であるか
否かを判定し(ステップ101)、リターンアドレスが
命令アドレス“3100”でなければ、この1つ前のフレー
ムがスタック45内の先頭のフレームで無いことを確認
し(ステップ102)、この後に該1つ前のフレームに
おけるフレームリンクに基づいてフレームを更に遡り
(ステップ103)、遡ったフレームにおけるリターン
アドレスが命令アドレス“3100”であるか否かを判定す
る(ステップ101)。
【0014】前記各ステップ101,102,103は
繰返され、これによりフレームを1つずつ遡り、その度
にフレームにおけるリターンアドレスが命令アドレス
“3100”であるか否かの判定が行われる。この結果、フ
レーム2に遡ったときに該フレーム2におけるリターン
アドレスが命令アドレス“3100”であると判定されるこ
ととなり(ステップ101)、この命令アドレス“310
0”は先に述べたように該フレーム2より1つ前のフレ
ームが例外設定フレーム1であることを定義する指標で
あるので、例外設定フレーム1の所在が明らかとなる。
【0015】このため、中央処理装置41はフレーム2
のフレームリンクに基づいて例外設定フレーム1に更に
遡り(ステップ104)、この例外設定フレーム1にお
ける第1の引数11によって示されるエラーの種類
“A”がエラーの発生時に受取った信号によって示され
るエラーの種類“A”に一致するか否かを判定する(ス
テップ105)。ここでは両者の種類が一致するので、
例外設定フレーム1における第2の引数12によって示
される例外関数“handle”の開始アドレス2000が読出さ
れ、この例外関数“handle”が実行される(ステップ1
06)。これにより、種類“A”のエラーに対処するた
めの予め定められた例外処理が行われることとなる。
【0016】なお、前記ステップ105で第1の引数1
1によって示されるエラーの種類と、エラーの発生時に
受取った信号によって示されるエラーの種類とが一致し
なかった場合は、前記ステップ106に移る代りに、前
記ステップ102に移り、フレームを更に遡ることとな
る。また、前記ステップ102で遡ったフレームがスタ
ック45内の先頭のフレームであると判定された場合
は、エラーとなり(ステップ107)、結果として例外
設定フレームを見付け出すことができなかったこととな
る。
【0017】このように通常処理を開始するに際して
は、例外関数をアクセスするための第2の引数12を書
込んだ例外設定フレーム1を形成しておき、エラーが発
生したときには予め定められた命令アドレス“3100”に
基づいて例外設定フレーム1を検索し、例外設定フレー
ム1における第1の引数11に基づいてエラーの種類を
確認した後に、この種類のエラーに対処しうる例外関数
を実行するようにしている。したがって、通常処理を行
うための実行環境下で例外処理を行うこととなり、通常
処理から例外処理に直ちに移ることができ、オーバーヘ
ッドが小さくて済む。また、例外処理を終了した後に
は、例外設定フレーム1からの通常処理を直ちに再開す
ることができる。
【0018】ところで、上記実施例では種類“A”のエ
ラーと例外関数“handle”との一組の関係を例示してい
るが、更に複雑な例外処理を行いうる。例えば種類
“A”のエラーを更に細分化して、種類“A”に属する
第1のエラー,第2のエラー,…を予め定義するととも
に、第1のエラー,第2のエラー,…に対応するそれぞ
れの例外関数を予め定義しておき、さらに第1のエラ
ー,第2のエラー,…のうちのいずれが発生したかを検
索するための通常関数を例外設定フレーム内に定義して
おく。そして、種類“A”のエラーが発生した場合は、
例外設定フレームまで遡り、前記通常関数を実行するこ
とにより第1のエラー,第2のエラー,…のうちのいず
れが発生したのかを検索し、発生しているエラーに対処
するための例外関数を実行するようにすればよい。ま
た、複数の通常処理を連続して行う場合は、これらの通
常処理毎に例外設定フレームを逐次形成し、これらの例
外設定フレームにおいて種類“A”のエラー,種類
“B”のエラー,…をそれぞれ定義しておけば、一連の
通常処理に際して起こりうる様々なエラーに対処するこ
とができる。このように様々なエラーに対処する場合で
あっても、基本的には発生したエラーの種類に応じた例
外設定フレームまで遡り、例外処理の終了後に該例外設
定フレームから開始される通常処理を再現すればよいの
で、従来のシステムと比較して例外処理のために複雑な
プログラムを必要としない。
【0019】
【発明の効果】以上説明したように本発明によれば、通
常処理に際してエラーが発生した場合は、エラー発生時
に形成されたフレームから例外設定フレームまで遡り、
この例外設定フレーム内の第2の引数に対応する例外関
数を実行するようにしているので、通常処理を行うため
の実行環境下で例外処理が行われることとなり、このた
め通常処理から例外処理へと直ちに移ることができ、よ
ってオーバーヘッドが小さなプログラミング言語におけ
る例外処理方法を提供することができる。
【図面の簡単な説明】
【図1】本発明に係わる例外処理方法を適用した実施例
における各フレームの構成を示す図。
【図2】本実施例における各種の関数を例示する図。
【図3】本実施例における例外発生時の処理手順を示す
フローチャート。
【図4】プログラミング言語を用いて処理を行う一般的
なシステムの概略構成を示すブロック図。
【符号の説明】
1…例外設定フレーム 2,3…フレーム 11…第1の引数 12…第2の引数 13…第3の引数 41…中央処理装置 42…メモリ 43…命令コード群 45…スタック
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 9/46 G06F 9/40 G06F 9/42 G06F 9/44 G06F 11/00 JICSTファイル(JOIS) CSDB(日本国特許庁)

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】複数の関数を順次呼出して実行するに際
    し、関数を実行する毎にフレームを逐次形成し、このフ
    レームには該フレームの形成時に実行した関数によって
    用いられた引数と、該関数の実行終了時の戻り先を示す
    リターンアドレスと、該フレームより1つ前に形成され
    た他のフレームをアクセスするためのフレームリンクと
    が含まれるプログラミング言語において、エラーを示す
    第1の引数と、エラーの発生時に実行される例外関数を
    示す第2の引数と、通常処理に際して実行される通常関
    数を示す第3の引数とを含む例外設定フレームを形成
    し、前記例外設定フレーム内の前記第3の引数に対応す
    る通常関数を実行することにより、1つ前のフレームが
    前記例外設定フレームであることを示す指標をリターン
    アドレスとして含むフレームを形成して、この後に通常
    処理のための一連の各関数を順次実行し、通常処理に際
    してエラーが発生した場合は、エラー発生時に形成され
    たフレームから1つ前のフレームへと前記フレームリン
    クに従って順次遡り、フレーム毎にリターンアドレスが
    前記指標であるか否かを検索し、該指標であるリターン
    アドレスがフレームに含まれていれば1つ前のフレーム
    を前記例外設定フレームであるとみなし、この例外設定
    フレーム内の第1の引数を確認して前記第2の引数に対
    応する前記例外関数を実行することを特徴とするプログ
    ラミング言語における例外処理方法。
JP3016725A 1991-02-08 1991-02-08 プログラミング言語における例外処理方法 Expired - Fee Related JP3021697B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3016725A JP3021697B2 (ja) 1991-02-08 1991-02-08 プログラミング言語における例外処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3016725A JP3021697B2 (ja) 1991-02-08 1991-02-08 プログラミング言語における例外処理方法

Publications (2)

Publication Number Publication Date
JPH04256031A JPH04256031A (ja) 1992-09-10
JP3021697B2 true JP3021697B2 (ja) 2000-03-15

Family

ID=11924239

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3016725A Expired - Fee Related JP3021697B2 (ja) 1991-02-08 1991-02-08 プログラミング言語における例外処理方法

Country Status (1)

Country Link
JP (1) JP3021697B2 (ja)

Also Published As

Publication number Publication date
JPH04256031A (ja) 1992-09-10

Similar Documents

Publication Publication Date Title
JP3021697B2 (ja) プログラミング言語における例外処理方法
JP2922723B2 (ja) 情報処理装置
US5303376A (en) Program partial linking system for linking a specific program prepared in advance when an assigned program is not in a program library
JP3130798B2 (ja) バス転送装置
JP2001060240A (ja) フォーマット修正方法およびデータ変換方法
JP3489153B2 (ja) ファイルシステム
JPH08286950A (ja) 情報処理装置及びトレース情報格納方法
JP2859501B2 (ja) 工事設計支援システム
JPH0695868A (ja) ソフトウェア管理方式
JP3079825B2 (ja) 電子計算機装置
JP2702356B2 (ja) デバッグ情報アクセス方式
JP3428253B2 (ja) シーケンサ
JPS6149695B2 (ja)
JPH05197538A (ja) プリコンパイラ方式における例外発生行番号表示方式
JPH0327439A (ja) プログラムの共有モジュール管理方式
JPH11184680A (ja) ファイル編集方法及びこれを用いたプログラム開発方法及び装置並びに記憶媒体
JPH06103113A (ja) 差分テストデバック支援方法
JPH01130234A (ja) 障害探索方式
JPH06175862A (ja) 電子計算機装置
JPH07244601A (ja) 関係データベースのアクセス方法および装置
JPH04172527A (ja) リンク処理装置
JPH04160541A (ja) ファイルシステム処理装置
JPH06332683A (ja) テーブルリンク装置
JPH02148126A (ja) データ退避処理装置
JPS6146562A (ja) 配列要素の演算処理方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080114

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090114

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees