ActiBookアプリアイコンActiBookアプリをダウンロード(無償)

  • Available on the Appstore
  • Available on the Google play

概要

TET5

3TETライブラリの言語バインディングこの章では、TETライブラリで供給されるさまざまな言語バインディングの仕様について解説します。TETディストリビューションには、対応しているすべての言語バインディングによるいくつかの小さなTETアプリケーションのための完全なサンプルコードが含まれています。3.1例外処理ある種のエラーは多くの言語において例外と呼ばれています。それにはもっともな理由があり、そうしたエラーは単なる例外で、プログラムが始まって終わるまでの間にそう頻繁には起こらないと予想されるからです。一般的なさばき方としては、まずいことが頻繁に起こりそうな関数呼び出しについては通常のエラー報告のしくみ(要はエラーコードを返す)を採用するとして、めったに起こらなさそうなものについてまでそれをやるとコードがあらゆる場合分けによって条件文だらけになってしまうので、それを避けるためにそうしたものについては特殊な例外のしくみを採用するのが普通です。TETでもまさにその通りのことを行っています。操作によっては、割と頻繁にまずいことが起きると予想できるものがあります。たとえば:>正しいパスワードを知らないPDF文書を開こうとした(ただし、63ページの5.1「暗号化PDFから内容を抽出」で説明するシュラッグ機能も参照)。>誤ったファイル名でPDF文書を開こうとした。>修復できないほど破損しているPDF文書を開こうとした。TETはこのようなエラーを、値-1を返すことによって知らせます。APIリファレンスに記述している通りです。一方、有害と考えられる出来事ではあっても起きる頻度は割と低いものもあります。たとえば:>仮想メモリが足りなくなった。>関数に与えたパラメタがおかしい(文書のハンドルが無効だった等)。>オプションリストを与えたら形式が間違っていた。>必要なリソースなのに(日中韓テキスト抽出にはCMapファイルが必要等)見つからない。TETがこのような状況を検知した場合には、特別なエラー値が呼び出し元に返るのではなく、例外が発生します。例外にネイティブに対応している言語では、例外の発生は、その言語・環境が与える標準手段を用いて行われます。C言語バインディングの場合には、TETはカスタムの例外処理のしくみを提供しているので、クライアントはそれを用いる必要があります(27ページの3.2「Cバインディング」参照)。重要な留意点としては、例外が起きたら文書の処理は止めなければなりません。例外の後に呼んでも安全なメソッドはdelete( )・get_apiname( )・get_errnum( )・get_errmsg( )だけです。これ以外のメソッドを例外の後に呼ぶと予測できない結果につながることがあります。この例外は以下の情報を持っています。>一意のエラー番号。>例外の原因となったAPI関数の名前。>問題点を説明した文。失敗した関数呼び出しの原因を取得TETの関数によっては、たとえばopen_document( )やopen_page( )等、呼び出して失敗しても例外が発生しないものがあります(そうした関3.1例外処理25