私はQt/C++でのエラー処理について多くの研究を行ってきました。たぶん私は簡単な方法を探しています(他の言語のように)。 1つは、特に、私が宗教的に使用する処理されない例外を提供します。プログラムで問題が発生すると、処理されない例外がスローされ、自分でエラーレポートを作成できます。そのレポートは、顧客のマシンからオンラインのサーバーに送信され、後で読むことができます。Qt/C++エラー処理
私がC++で抱えている問題は、実行されたエラー処理がすべて手作業であることを考えなければならないことです(try/catchまたは大量の条件を考える)。私の経験では、コードの問題は手前にあるとは考えられておらず、まずは問題がないでしょう。
クロスプラットフォームのエラー処理/レポート/トレースメカニズムを使用せずにクロスプラットフォームアプリケーションを作成することは私には少し怖いです。
私の質問は:QtやC++の特定の「catch-all」エラートラッピングメカニズムがありますか?私のアプリケーションで使用できるものがあります。何か問題が起きた場合は、少なくとも前にレポートを書くことができます。それはクラッシュする?
例:
class MainWindow: public QMainWindow
{
[...]
public slots:
void add_clicked();
}
void MainWindow::add_clicked()
{
QFileDialog dlg(this, Qt::Sheet);
QString filename = dlg.getOpenFileName(this);
if(!filename.isEmpty())
{
QStringList path = filename.split(QDir::separator());
QString file = path.at(path.count()); // Index out of range assertion.
if(!lst_tables->openDatabase(filename))
{
[...]
}
}
}
私はこのエラーが未処理の例外とユーザーのWindows/Macオペレーティングシステムのデフォルトのクラッシュ画面を表示せずに終了するためのアプリケーションとしてキャッチすることにしたいです。アサーションメッセージをファイルなどに書き込んだ後にうまく終了しないようにしてください。
私はそこにあなたのtry-catchの例を表示できますか? –
@ShiGon:完了... – Macke
私は自分がスローコマンドを使用する場合を除いて、私が何かtry-catchからの愛を得ていないので、何かが間違っていると思う。とても混乱します。それでもアプリケーションはクラッシュし、この場合Appleにエラーレポートを送信しようとします。私は正常に終了するアプリケーションを取得しようとしています。 –