A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
「例外」自体が分からない、ということでしょうか、それとも「例外」はなんとなく
理解しているが、try と catch が分からないんでしょうか。
例外とは、その名の通り、こんなはずではなかった、ということを表すものです。
つまり、予期せず起こるものです。
でも、例外が起きたときの対処は、それぞれに対して1対1で対処法があると
いうよりは、細かいことは気にせずまとめて処理できることの方が多いです。
「こんなはずではなかった!」というときには、例外を *投げます* (throw)。
投げられた例外は、例外の後始末をする誰かが *受け取ります* (catch) 。
例外を受け取るために、範囲が指定できます。例外が起きるかどうか試してみる
という意味で try というブロックがあります。
例外は概念で、例外の実体にはクラスを指定できます。
下に示すプログラムは、ふたつ数字を入力して割り算をした結果を表示する
ものです。0では割れませんから、そのときは例外としています。雰囲気が
分かるでしょうか?
#include <iostream.h>
class ExceptionDivideByZero {
private:
int x_, y_;
public:
ExceptionDivideByZero(int x, int y) : x_(x), y_(y) {}
void printMessage();
};
void ExceptionDivideByZero::printMessage()
{
cout << "Divide By Zero. " << x_ << " / " << y_ << endl;
}
int divide_number(int a, int b)
{
if (b == 0) {
throw ExceptionDivideByZero(a, b);
}
return a / b;
}
int main()
{
int a, b, c;
try {
cerr << "a: "; cin >> a;
cerr << "b: "; cin >> b;
c = divide_number(a, b);
cout << "a / b = " << c << endl;
} catch (ExceptionDivideByZero ex) {
ex.printMessage();
}
return 0;
}
★実行結果
$ prog
a: 4
b: 2
a / b = 2
$ prog
a: 5
b: 0
Divide By Zero. 5 / 0
# 「伝わるかな~」という意味で自信無しにしておきます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Javaのソースコード作成が難しいです... 10 2022/11/11 14:06
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Java すみません。助けてください。 javaについての質問です。 integerに変換できない数値をエラー 5 2022/05/18 19:16
- オープンソース Try Kotlinで readLine()を使うには 1 2023/03/27 21:06
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- 英語 "Try not"と"Don't try"の違い等について 9 2022/12/14 11:45
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- ノートパソコン パソコンのCドライブとDドライブの違いについてお教えください。 4 2023/01/07 16:47
- ドライブ・ストレージ MacBook Proに外付けHDD(USB3.0)を接続するには? 5 2022/09/02 19:52
- 英語 to不定詞は、to不定詞を目的語にできますか? 1 2022/05/11 14:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
比較回数と交換回数表示について
-
nCmの関数
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 配列と関数の練習問題
-
c言語
-
std::set<int> で、ある値が何...
-
卒業研究でよく分からないとこ...
-
C言語 エラーの原因がわからな...
-
DLLをGetProcAddress()で実行で...
-
【C++】関数ポインタの使い方
-
read関数をノンブロッキングで...
-
C言語における対称行列の作り方...
-
構造体の勉強中です 合計点の高...
-
C言語です。
-
C言語での引数の省略方法
-
困ってます…nCrを求めるC言語...
-
C++でvectorにテキストファイル...
-
プログラミング
-
素数 再帰関数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語 配列と関数の練習問題
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
c言語
-
足して100になるような乱数のア...
-
C言語初心者です、、、お助けく...
-
数字列を3桁ごとにカンマで区切...
-
C言語 エラーの原因がわからな...
-
実数の整数部,小数部の取得
-
課題でつまってます・・・
-
商と剰余を同時に求める(C言語)
-
C言語の配列をC++のvectorに高...
-
std::set<int> で、ある値が何...
おすすめ情報