WebBrowserコントロールとMFCHTMLダイアログを使用して、ポータブルC++アプリケーションインターフェイスを構築します。私はwindow.external(実際には私のダイアログクラスです)を使用して、ブラウザー内のJavaScriptコードのC++機能を公開しています。したがって、たとえば、ユーザーが設定を保存したい場合は、[保存]ボタンをクリックします。この場合、次のようにwindow.externalを呼び出します。
<script type="text/javascript">
$("#Save").click(function() {
try
{
window.external.Save();
}
catch(error)
{
alert(error);
});
</script>
さて、HTMLダイアログには次のようなメソッドがあります。
void CMyDialog::Save()
{
// Do something...
}
ユーザーが無効な設定を入力した場合、CMyDialog :: Save()内で例外を生成してメソッドの実行を停止し、エラーメッセージを表示することは論理的に見えます。ただし、ここでの問題は、C ++例外をJavaScriptで処理する必要があることであり、それを実装する方法がわかりません。つまり、JavaScriptがtry-catchステートメントで例外を処理できるようにC ++コードで例外をスローする方法はありますか? PSこの問題を回避する方法があることを理解しています。たとえば、例外をスローする代わりにSaveメソッドからエラーコードを返し、成功した場合は0を返すことができます。ただし、少なくとも私にとっては、例外の方がはるかに快適で直感的なエラー報告方法です。そのため、誰かが解決策を知っている場合は、アイデアを書いてください。