入出力に関して、リスト1とリスト2との違いを述べてきましたが、CとJava の二つの
プログラムを比べてみたとき、これ以上に大きな違いがあることに気付いていると
思います。それは、Java のプログラム中に、try と catch という、Cには存在しない
文が現れていることです。
Java は、構文的には、Cの制御構造を忠実に受け継いでいます。Cを知っていれば、
Java のプログラムを読むことは、比較的容易です。ただ、最初にJava のプログラムを
見た時、Cとの違いとして、一番目に飛び込んで来るのは、この try とcatch です。
try と catch は、組になって用いられます。片方だけで登場することはありません。
基本的には、 try .... try block ..... catch ( Exception e ) .....
という形をして、try block 中で、エラーなど例外的な処理が起きたら、try block
での実行を中断して、tryに対応するcatch句を実行します。
もう少し正確にいえば、tryブロック中のあるメソッド達は、例外的な状態に遭遇した
ら特定のオブジェクトをほうり投げるように、あらかじめプログラムされています。
catch句の、catch(....) .... の、(....)の部分は、キャッチすべきオブジェクトの
クラスを指定し、同時に、catch句の中で、そのキャッチされたオブジェクトにつける
名前を記述します。tryブロックから、複数のオブジェクトが投げられる
可能性があるのなら、catch句を複数つなげることで対応します。
ですから、次のような構文が可能となります。
try { ........ ........ } catch ( ClassA a) { ........ } catch ( ClassB b) { ........ } catch ( ClassC c) { ........ }
リスト1では、一つ一つの関数を呼び出すたびに必要なエラー処理をしているのに 対して、リスト2では、全体を一つのブロックにまとめて、Exception オブジェクトが 飛んでくるのを待っています。これは、エラー処理としては、少し手抜きです。