类型错误:无法调用未定义的方法“closeFileCSV” - try/finally block

TypeError: Cannot call method "closeFileCSV" of undefined -- try/finally block

本文关键字:closeFileCSV try block finally 方法 错误 调用 未定义 类型      更新时间:2023-09-26

我目前有一个这种格式的尝试/最终块:

try {
  var someOtherObject = new SomeOtherObject(param1, param2);
  someOtherObject.doStuff();
  // Object that basically holds a 'result set' of csv rows.
  var csv = new CsvObject();
  csv.openCSV(); // does not throw an error
  do {
    try {
      // Code that grabs stuff from the csv in a straightforward fashion.
    } catch (e) {
      log.info(e); // Log the error and continue on.
    }
  } while (csv.hasNext());      
} finally {
  csv.closeFileCSV(); //throws a TypeError: Cannot call closeFileCSV() on undefined.
}

循环中没有抛出任何错误,也没有我在 finally 块之外可以告诉的任何其他错误。 谁能给我一些线索,说明为什么在最终块中调用closeFileCSV时它会抛出TypeError? 我不是JavaScript专家,但似乎范围在这里不应该是一个问题。 我知道csv被正确初始化,因为try块使用该对象来做事并且没有抛出任何错误。

我希望我只是没有看到明显的东西。 让我知道是否需要粘贴更多代码才能解决此问题。

谢谢。

我已经确定变量someOtherObject返回了一个空对象。 因此,当调用 doStuff(( 方法时,会抛出异常。 但是,一旦发生此异常,将立即触发 finally 块;在 finally 块中,抛出 TypeError 是因为 csv 尚未在 try 块中初始化。

然而,后一个错误是唯一显示的错误,这是混淆的根源。 一旦我解决了某个OtherObject的问题,代码就可以工作了。(我还在关闭方法周围添加了保护,以确保 csv 已初始化(。