我使用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;然而,例外情况要更直观,至少对我来说是至关重要的,所以如果有人知道解决方案,请写下你的想法。