【发布时间】:2013-10-11 17:36:22
【问题描述】:
我目前有一个这种格式的 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 块使用该对象执行操作并且不会引发任何错误。
我希望我只是没有看到明显的东西。让我知道是否需要粘贴更多代码才能解决此问题。
谢谢。
【问题讨论】:
-
将
var csv = new CsvObject();移出try块 -
但是 Javascript 只有全局和函数作用域。假设进入了 try 块,那么这个变量应该在 finally 块中可用。
标签: javascript try-catch-finally