アプリ版:「スタンプのみでお礼する」機能のリリースについて

下に抜粋した本の解説の部分がわかりません。「呼び出し側」ってなんですか?
--------------------------------------------------

このプログラムのetst( )メソッドでは、スロー宣言「throws FileNotFoundException」が行われます。
記述(1)でエラーが発生したら、その情報を呼び出し側に送り、そこでetst( )の処理は終わりになるため、記述(2)は実行されません。記述(1)でエラーが発生しなかった場合は、記述(2)が実行されます。

import java.io.*;

public class JcReig3 { // JcReig3.java [java]
public static void main(String args[]) {
try {
etst();
}
catch (FileNotFoundException e) { // 呼び出し側でcatch節を書く
System.out.println("例外発生: " + e);
}
}

// こちらはthrows宣言を書く
public static void etst() throws FileNotFoundException {
FileReader fr = new FileReader("xfile.txt"); // (1)
System.out.println("正しくオープンされました"); // (2)
}
}

A 回答 (2件)

public static void main(String args[]) {


try {
etst(); <-----------ここのことです。
}
catch (FileNotFoundException e) { // 呼び出し側でcatch節を書く
System.out.println("例外発生: " + e);
}
}

mainメソッドのなかでetstメソッドを呼んでいます。
etstメソッドは処理を正常に終了するまえに例外を投げます。(この場合FileNotFoundException )

この例外が上がると呼び出し元(この場合mainメソッド)に処理が返されます。
正確にはmainメソッドのcatch節まですっとびます。
    • good
    • 0
この回答へのお礼

お返事どうもありがとうございました。
なるほど!そういうことだったんですね。
大変よくわかりました。
感謝感謝です!

お礼日時:2003/11/26 14:00

初心者に見えるので、言葉を選んで書きます。



etestはメソッドです。
メソッドには、定義する部分と、
メソッドを使うところがあります。
一般的にメソッドを使うことをメソッドを呼び出すと
いいます。
メソッドの呼び出し側といえば、
簡単にいえば、
メソッドを呼び出している場所のことです。


メソッドの定義の中にはメソッドが呼び出された時
に、処理される内容が記述されています。
そのメソッドの定義部分に書いてある
処理内容を実行したい場所で、
メソッドを呼び出すと、あらかじめメソッドに定義された
内容の処理をしてくれて、終わったら、
呼び出した、場所の直後から、処理が進みます。
メソッドの定義部分の最初の
{}の前に記載されている。

public static void etst() throws FileNotFoundException

の部分を
メソッドの宣言部分といったり、
メソッドのヘッダーといったり、
します。
そこには、外部のメソッドを使う側
つまり、呼び出し側に対して、
どんな呼び出し方をしたらいいかについての
構文情報が記載されています。
publicという文言をprivate などの文言に
かえることによって、ある特定の人しか、
呼び出せないようにすることも可能です。
このように、ここに記載された文言によって、
呼び出し側は、呼び出し方がある程度きまって
しまいます。
ここに、throwsというキーワードが
ありますが、これはこの後に続く、
FileNotFoundExceptionという例外クラスを
このメソッドが投げる可能性があるといっています。

例外クラスってなに?とか
投げるってなに?とか
いろいろ、疑問があるでしょうが・・。
とりあえず、がまんしてそういうもんだとおもって
ください。
呼び出し側ってなんですか?
って聞いてるレベルで、質問されても説明の
しようがありません。

そして、このthrowsの後ろがもし、
チェックされる例外の時は
呼び出し側では、
try ~ catchで囲んで
catchで
FileNotFoundException
かまたは、その親を
キャッチするか
呼び出し側のメソッド自体の
throwsに
FileNotFoundException
か、またはその親がないと
コンパイルエラーになります。


チェックされる例外ってなに?
とか、
親ってなに?
とかの疑問も、同様にして、いまはがまんしてください。

とりあえず、今は、
コンパイルエラーになった時に、
呼び出そうとしているメソッドの
{}の前にthrowsがあってその
throwsのとなりにあるものが
コンパイルエラーのメッセージにでてきてたら、
呼び出し側で、それを、
try ~ catchしておけば、
コンパイルがとおって、とりあえずは、
自分がやりたい動くものが作れるということだけ。
知っとけば十分だと思います。
    • good
    • 0
この回答へのお礼

お返事ありがとうございました!

>初心者に見えるので、言葉を選んで書きます。

ありがとうございます!お察しのとおり筋金入りの初心者でしてあまり難しいことを言われても混乱しちゃいます(笑)

言葉を選んでくださって大変わかりやすかったです。今は気にしなくていいところなども教えてくださってこれからの学習も計画が立てやすくなりました。
これからもっとJavaのことについて勉強していきたいです。今回はどうもありがとうございました。

お礼日時:2003/11/26 14:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!