捕获window.open()错误

时间:2018-07-05 12:29:25

标签: javascript flask error-handling

我通过window.open()从网页上的远程API打开文件下载。该API(Flask服务器)具有错误处理功能,如果内部发生服务器错误,则返回错误消息,如下所示:

@app.errorhandler(502) //all other errors are handled the same way, including 500, etc.
@crossdomain(origin='*')
def bad_gateway_error(error):
    return "Bad Gateway Error - Please make sure you're using a properly formatted file! Details: " + str(error), 200

我想在我的网站上显示此错误,而不是重定向到错误页面。我试图通过以下方式捕获它:

try {
    window.open("https://API/receivedoc?timestamp="+timestamp,"_self")
} catch(e) {
    filerootdiv.querySelector('.output').innerHTML = String(e);
}

但是,此操作无效(已在Chrome中测试)。使用window.open时如何捕捉错误?我猜可能是因为在错误处理中我返回了200条消息,以便实际上返回返回的字符串,而不是仅仅使服务器崩溃(这需要保持这种方式,因为当我遇到其他所有错误时,它都可以正常工作我不尝试返回文件)。问题是在执行window.open()之前,我无法确定API请求是否返回文件或字符串。

更新

我尝试实施:

let new_window = window.open("https://flaskmin.run.aws-usw02-pr.ice.predix.io/receivedoc?timestamp="+timestamp,"_self")
newWindow.onerror = function() {
  filerootdiv.querySelector('.output').innerHTML = "Error!";

但是,这仍然只会打开一个带有错误的新窗口。我猜这是由于服务器端的错误处理(我无法更改)。我可以在重定向到new_window之前以某种方式探查import pandas as pd file_path = "Input2010_5a.txt" cov = pd.read_csv(file_path, sep='\t').cov() 的内容,如果它只是一个包含'error'一词的字符串而不能打开它的话?

0 个答案:

没有答案