Cの例外処理
組み込みの例外処理がないCで、堅牢なエラー処理戦略を実装します
「Cの例外処理」はCoddyKit上の無料C Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全3レッスンが含まれています。
例外処理入門
Cの例外処理
C++やJavaなどの言語とは異なり、Cには組み込みの例外処理機能がありません。
このレッスンでは、次のことを学びます:
- 戻り値を使ってエラーを処理する方法
setjmpとlongjmpを使って例外処理を行う方法errnoを使ってシステムエラーを処理する方法

戻り値を使ったエラー処理
戻り値を使ったエラー処理
Cでエラーを処理する最も簡単な方法は、戻り値を使うことです。
例:
int divide(int a, int b) {
if (b == 0) return -1; // Error code
return a / b;
}
呼び出し元は、戻り値を確認してエラーの有無を判断します。
例:戻り値を使ったエラー処理
例:戻り値を使ったエラー処理
このプログラムは、戻り値を使ってゼロ除算をチェックします。
#include <stdio.h>
int divide(int a, int b) {
if (b == 0) {
printf("Error: Division by zero!\n");
return -1;
}
return a / b;
}
int main() {
int result = divide(10, 0);
if (result != -1) {
printf("Result: %d\n", result);
}
return 0;
}setjmpとlongjmpを使ったエラー処理
setjmpとlongjmpを使ったエラー処理
setjmp関数とlongjmp関数を使うと、非局所ジャンプを実行して例外処理を再現できます。
手順:
setjmp()を使って復帰ポイントを設定します。- エラーが発生したときに
longjmp()を使ってそのポイントへ戻ります。
例:setjmpとlongjmpを使う
例:setjmpとlongjmpを使う
このプログラムは、エラー処理にsetjmpとlongjmpを使います。
#include <stdio.h>
#include <setjmp.h>
jmp_buf buffer;
void errorHandler() {
printf("Error occurred! Jumping back to safe state.\n");
longjmp(buffer, 1);
}
int main() {
if (setjmp(buffer) == 0) {
printf("Executing main program...\n");
errorHandler();
} else {
printf("Recovered from error.\n");
}
return 0;
}システムエラーにerrnoを使う
システムエラーにerrnoを使う
errno変数には、システムコールから返されたエラーコードが格納されます。
例:
#include
fopen()のような関数は、エラーが発生するとerrnoを設定します。
例:ファイル処理にerrnoを使う
例:ファイル処理にerrnoを使う
このプログラムは、存在しないファイルを開くときにerrnoを確認します。
#include <stdio.h>
#include <errno.h>
int main() {
FILE *file = fopen("nonexistent.txt", "r");
if (!file) {
perror("Error opening file");
}
return 0;
}エラー処理のベストプラクティス
エラー処理のベストプラクティス
エラーを効果的に管理するには:
- 関数の戻り値を確認します。
- システムエラーには
errnoを使います。 - 必要な場合に限り、
setjmpとlongjmpを使います。
まとめ
まとめ
このレッスンでは、次のことを学びました:
- 戻り値を使ってエラーを処理する方法
setjmpとlongjmpで例外処理を再現する方法- システムエラーの検出に
errnoを使う方法
Cのデバッグとエラー処理のセクションはこれで終了です!

よくある質問
「Cの例外処理」レッスンは無料ですか?
はい。「Cの例外処理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全3レッスンが含まれています。
「Cの例外処理」で何を学びますか?
組み込みの例外処理がないCで、堅牢なエラー処理戦略を実装します ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「Cの例外処理」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC Academyレッスンでコードを書いて実行できますか?
はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- GDBによるデバッグ
- よくある実行時エラー
- Cの例外処理