
No.3ベストアンサー
- 回答日時:
ANSI規格では、mainの中で使う限りにおいては、returnとexitに関しては違いがありません。
関数の中で使った場合、returnはその関数を呼び出した関数に対して値を返すのに対し、exitはそのプログラムを呼び出した他のプログラム(OSや他のプロセス、サービスなど)に対して値を返します。
これらを念頭において使い分ければいいと思います。
私の場合は、exitはmainと各関数でプログラムの仕様上エラーに対処できない場合にプログラムを強制終了したい場所で使います。
それ以外の場所ではreturnを使います。
この回答への補足
とても分かりやすかったです、ありがとうございます。
エラー処理の仕方によって使い分けたらよいということでしょうか?
余談ですが、皆様親切で優劣がつけ難く困ってしまいます、感謝します。もう暫く回答を募らせて頂いて質問を閉じさせて頂くつもりです。
No.5
- 回答日時:
私の場合、main以外の下位関数では、次のように場合わけして組んでいます。
1.エラーで強制終了が必要な場合exitでエラーコードを返してプログラムを終了
2.エラーがその関数内で修復可能であればreturnで正常終了のコードを返す
3.その関数内でエラー処理できないが、呼び出しもとの関数でエラー処理できれば、returnでエラーに対応したエラーコードを返し、上位の関数でエラー処理をする
なるほど、やはりできる限り上位の関数に処理を戻した方がいいということでしょうか。 なかなか本には載っていない価値のあるアドバイスを頂けてうれしいです。
ありがとうございました。
No.4
- 回答日時:
> newで生成したものはexitで終了するとどうなるのでしょうか?
どうにもなりません。これはmain関数からreturnした場合でも同じです。
newで生成したものは、プログラマの責任でdeleteする必要があります。
No.2
- 回答日時:
bool型を使うとのことなのでC++だと判断します。
(C99の可能性もありますが...)exit関数でプログラムを終了させると、自動記憶域に生成したインスタンスのデストラクタが呼ばれません。デストラクタで行っている処理によっては、かなり深刻な不具合になる可能性があります。
できれば例外をスローして、main関数でreturnする方が安全です。
この回答への補足
なるほどデストラクタの件大変参考になりました。
的が外れていたらすみませんが、newで生成したものはexitで終了するとどうなるのでしょうか?
WM_DESTROY等で明示的にdeleteしないとどうなるのでしょうか?
No.1
- 回答日時:
サブルーチン内にEXIT命令を入れるのは避けるべきです。
非常にデバッグしにくくなりますので。
その関数が正常に終了したかどうかをReturn命令で与えてやってメインの方でその数値で処理方式を変更してやるのが通常です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
【VBA】ワークブックを開く時に...
-
.VBSだとADODBのプロバイダが見...
-
ASPでこんなエラーが出たんです...
-
お助けください!VBAのファイル...
-
mailstorehomeのエクスポートで...
-
pythonのopenpyxlについて
-
Excel VBA のFunctionプロシー...
-
VBA データ(特定値)のある最...
-
バッチファイルで、あるスクリ...
-
ステートメントが見つかりません
-
【Access】Excelインポート時に...
-
VB6 MSFlexGrid行数指定について
-
VBAのリストボックスで、横スク...
-
マクロの「SaveAs」でエラーが...
-
レコード登録時に「演算子があ...
-
実行時エラー '8021'とはどんな...
-
ある1人の友達のLINEで、少しの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
VBA データ(特定値)のある最...
-
インポート時のエラー「データ...
-
マクロで"#N/A"のエラー行を削...
-
VBAのリストボックスで、横スク...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
Filter関数を用いた結果、何も...
-
文字列内で括弧を使うには
-
【VB.NET】 パワポ操作を非表示で
-
レコード登録時に「演算子があ...
おすすめ情報