Javascript TypeError:无法调用方法";closeFileCSV";未定义的类型--try/finally块
我目前有一个这种格式的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 {
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块中可用。