Javascript
FileReader
对象支持 onerror
处理程序,该处理程序在出现错误时被调用,但传入的事件是 ProgressEvent
并且不包含错误的任何详细信息。
如何找出实际发生的错误?
在 RTFMing 更仔细地响应 @Ariel 的评论后 (https://developer.mozilla.org/en-US/docs/Web/API/FileReader/error),我看到 FileReader 有一个
error
属性以及 error
事件。当调用错误处理程序时,传递给它的 ProgressEvent
几乎没有用,您需要查看 error
属性。
因此代替:
reader.onerror = x => { throw x }
更合适的回答是:
reader.onerror = () => { throw reader.error }`
或者如果你要包装一个承诺(按照Javascript Promises with FileReader()),而不是:
reader.onerror = reject:
你最好使用
reader.onerror = () => reject(reader.error);
话虽如此,错误属性的类型是
DOMException
,它不是从Error
继承的,就我而言,包含很少的有用信息,但它似乎是最好的,并且据我所知告诉你,扔 DOMException
似乎被认为是可以接受的做法,即使它不是 Error