例外を生成する関数があります。たとえば、次のコード:
void test()
{
ifstream test("c:/afile.txt");
if(!test)
{
throw exception("can not open file");
}
// other section of code that reads from file.
}
例外をスローした後にリターンが必要ですか?
c# の場合はどうなりますか?
throw
通常、関数はすぐに終了するため、その後 (同じブロック内) にコードを配置しても実行されません。これは、C++ と C# の両方に当てはまります。ただし、ブロック内で例外をスローし、例外がキャッチされた場合は、適切なブロックtry
で実行が続行され、ブロック (C# のみ) がある場合は、例外がスローされたかどうかに関係なく実行されます。いずれにせよ、 の直後のコードは決して実行されません。catch
finally
throw
(通常、 /のthrow
内部に直接配置することは設計上の問題であることに注意してください。例外は、関数内でのエラー処理ではなく、関数間でエラーを発生させるために設計されています。)try
catch
いいえ、例外がスローされた後、その後のコードは実行されないため、戻る必要はありません。
メソッドを呼び出しthrow
た後、すぐに戻り、それに続くコードは実行されません。try / catch
これは、例外がスローされ、ブロックにキャッチされない場合にも当てはまります。