int somefunction(bool a)
{
try
{
if(a)
throw Error("msg");
return 2;
}
catch (Error const & error)
{
//do i need to return anything here??
//return -1;
}
}
1
A
答えて
6
何かを返すか、例外を再スローする(または新しいものをスローする)必要があります。キャッチブロックにキーワード
throw
を後で例外なく使用するだけで、同じ例外を再開できます。
1
戻り値が返されない場合、戻り値は未定義で、おそらく有効な戻りコードの1つを取得するため、後で呼び出し先が間違った処理を行う可能性があります。コンパイラはまた、(f.e.は "コントロールが非void型関数の終わりに到達した")は、このための警告を与える
2
2293512
:
printf("%i\n", somefunction(false));
printf("%i\n", somefunction(true));
が出力:これを試してみてください。
0
例外を再現しない限り、int(恐らくエラーのセンチネル値)を返す必要があります。
0
コンパイラ/コンパイラの設定によっては、戻り値なしで残すことのできるintを返す関数をコンパイルすることはできません。つまり、「実行は非void関数の終了に達します。したがって、例外を元に戻したい場合を除き、値を返す必要があります。
1
この関数はintを返すので、intを返す必要があります。代わりに、関数内の例外をキャッチして伝播させないようにすることができます。
1
まず、9行目に6行目を投げた例外をキャッチして、あなたは例外を誤って使用しています。あなたは基本的に、 "if"ステートメントで通常のプログラムフローでできることをやっています。この方法でコードベースにスローされた例外を追加することで、例外が本当に例外的な状況に使用されることはもはや真実ではなくなります。単純な選択肢がある場合は、関数から例外をスローしないことをお勧めします。あなたはそれが誤用であると考えられる場合は、理由を説明してください
- が例外に
関連する問題
- 1. ロギング後にUncaughtExceptionHandler例外が返される
- 2. 例外がJavaで返される
- 3. フラスコから404が返され、例外ブロックが返され、返されません。
- 4. WCFアクセス拒否例外は、CheckAccessCoreの後にクライアントに返されません。
- 5. 例外の後にコードがどのように実行されますか?
- 6. コンストラクタの最後にスロー例外がオブジェクトにダメージを与えますか?
- 7. データベース例外後にPDOのinTransaction()がfalseを返す
- 8. トランザクションのロールバック後にSpring AOPが例外を返す
- 9. 子オブジェクトと親オブジェクトに例外がスローされた場合の両方の例外を取得する方法
- 10. FormBuilderコントロールが「チェックされた後に式が変更されました」例外
- 11. すでに例外がキャッチされていますが、まだエラーが返されます
- 12. RavenDb LoadAsyncが返されず、例外をスローされない
- 13. 例外がスローされた後に実行を続行する
- 14. pythonリストで「例外なしでエラーが返されました」
- 15. DotNetOpenAuthは変更後にコンパイルされますが、サンプルプロジェクトの実行中にランタイム例外がスローされます
- 16. JNI関数からJava例外がスローされた後にC++デストラクタが呼び出されますか?
- 17. 例外が処理された後にブレークする必要があります
- 18. 内部例外のない未知の例外がスローされますか?
- 19. SQLException deadlocked:例外のどこかで実行されたクエリテキストが例外に含まれていますか?
- 20. NSOperationQueueを使用すると、返された後にmalloc'd void *が返された後に返されます
- 21. ボタンのクリック後にタイムアウト例外が表示されています
- 22. 演算子newは例外の後に初期化されたオブジェクトを破棄しますか?
- 23. datamarketに接続しようとすると例外が返されます
- 24. Xamarin iOS更新後のInsightsオブジェクトで例外が発生する
- 25. キャッチされないにSoapFault例外:[クライアント] SOAP-ERROR:エンコーディング:オブジェクトが
- 26. 操作が実行されるたびに例外がスローされるSqlDataReaderオブジェクト
- 27. Robolectricが例外を返します
- 28. 関数から返された後にdata.tableオブジェクトが出力されない
- 29. Servlet.init()例外がスローされます。
- 30. C#インストール後に例外がスローされない
を投げ
int
int
機能を終了することができ、言っ。 –
@Neilあなたは正しいです。私は今それを説明しました。 –
if(a)操作でも例外がスローされるとしますか?それで彼のコードは理にかなっています。しかし、私は実際のコードではなく、彼の質問をサポートするための簡単な例を投稿していると思っています。 –