我使用WebBrowser控件和MFC HTML對話框打造便攜式C++應用程序接口。我使用window.external(實際上是我的對話框類)爲瀏覽器內部的JavaScript代碼公開C++功能。因此,例如,當用戶想保存設置,他點擊保存按鈕,在這種情況下我打電話的window.external是這樣的:如何在MFC中實現的WebBrowser控件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 ::保存()內產生的異常停止方法執行,並顯示任何錯誤消息。但是,這裏的問題是C++異常必須由JavaScript處理,我不知道如何實現它。 所以:有沒有什麼辦法拋出異常的C++代碼以這樣的方式,JavaScript就可以用它的try-catch語句處理呢? P. S.我的理解是有辦法避免這種問題,例如,它可以從保存方法返回而不是拋出異常的錯誤代碼和成功,等返回0;然而,例外情況要更直觀,至少對我來說是至關重要的,所以如果有人知道解決方案,請寫下你的想法。