Javascript TypeError:无法调用方法";closeFileCSV";未定义的类型--try/finally块

Javascript TypeError:无法调用方法";closeFileCSV";未定义的类型--try/finally块,javascript,try-catch-finally,Javascript,Try Catch Finally,我目前有一个这种格式的try/finally块: 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

我目前有一个这种格式的try/finally块:

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块之外的任何其他地方抛出错误。有谁能给我一些线索,解释为什么在finally块中调用closeFileCSV时会抛出一个TypeError?我不是javascript专家,但范围似乎不应该成为问题。我知道csv的初始化是正确的,因为try块使用对象来完成任务,并且不会抛出错误

我希望我没有看到什么明显的东西。如果需要粘贴更多代码以解决此问题,请告诉我


谢谢。

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


然而,后一个错误是唯一显示出来的错误,这是混乱的根源。一旦我用其他对象解决了这个问题,代码就开始工作了。(我还为close方法添加了保护,以确保csv已初始化)。

Move
var csv=new CsvObject()
try
块之外,但是Javascript只有全局和函数作用域。假设输入了try块,那么这个变量应该在finally块中可用。