私は、メモリ不足のエラーを処理するための良いプラクティスは何ですか?メモリ不足エラーを処理するためのベストプラクティスは何ですか?
void SomeTask()
{
try
{
SomeObj obj = new SomeObj();
}
catch(std::bad_alloc&)
{
// What should be done here?
}
// ... more code ...
}
プログラムが不確定な状態で実行されている可能性があるため、私は黙って戻り値が間違っているように感じます。だから、ここで何が起こるべきか、私はプログラムをクラッシュさせなければならないのか、それとも良い選択肢があるのだろうか?このプログラムはサービスとして実行されるので、エラーメッセージをポップアップすることはできません。私はそれを行うために十分なメモリが残っている場合、何かをログに記録することが可能かもしれないと思います。しかし、私はちょうど、このような状況で何をすべきだと思いますか?
ありがとうございました。
まず、nullをテストしないでください。 'std :: bad_alloc'をキャッチします。 –
よろしくお願いします。 –
修正できない限り、secondはbad_allocを捕まえません。割り当てのポイントの近くにはほとんどどこにもありません。これがメインイベントループによって開始された何らかのサービスの場合は、サービスが終了してイベントループに戻ることができます。これが通常のアプリケーションフローの一部である場合、通常の結果は、スローによってアプリケーションが終了するようにすることです。 main()のすべての例外をキャッチしてログに記録し、例外を再現します。 –