在Node.js中,如果我有一个抛出异常的方法,那么该方法的console.log语句不会触发.我认识到在下面的简单测试用例中,我应该从readFileSync调用中捕获异常,否则就会对它采取防御措施.只是好奇是否有人可以向我解释这种行为.
简单的测试案例:
var fs = require('fs');
function readAFileThatDoesntExist(filename) {
console.log(filename);
fs.readFileSync(filename);
}
console.log("We're about to read a file that doesn't exist!");
readAFileThatDoesntExist("afile");
Run Code Online (Sandbox Code Playgroud)
输出:
$ node test.js
We're about to read a file that doesn't exist!
fs.js:338
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT, no such file or directory 'C:\blog\projects\bloggen\scripts\afile'
at Object.fs.openSync (fs.js:338:18)
at Object.fs.readFileSync (fs.js:182:15)
at readAFileThatDoesntExist (C:\blog\projects\bloggen\scripts\test.js:5:8)
at Object.<anonymous> (C:\blog\projects\bloggen\scripts\test.js:9:1)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
Run Code Online (Sandbox Code Playgroud) 我正在为面向对象的设计课做一个家庭作业,而且我在使用Scala的伴侣对象时遇到了麻烦.我在一些地方读过,伴侣对象应该可以访问他们的伴侣类的私有方法,但我似乎无法让它工作.(正如一个注释,作业的内容与实现二叉搜索树有关,所以我不只是要求答案......)
我有一个对象应该创建我的私有类的实例,BstAtlas(Bst也在Atlas对象中定义,为了清楚起见将其取出):
object Atlas {
def focusRoom(newRoom:Room,a:Atlas):Atlas = a.helpFocusRoom(newRoom);
abstract class Atlas {
...
protected def helpFocusRoom(n:Room):Atlas;
...
}
private class BstAtlas(bst:Bst) extends Atlas {
...
protected def helpFocusRoom(newRoom:Room):Atlas = ...
// uses some of bst's methods
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我去编译时,我收到以下错误:
Question23.scala:15:错误:无法在Atlas.Atlas a.helpFocusRoom(newRoom)中访问方法helpFocusRoom;
函数helpFocusRoom需要隐藏,但我不知道如何隐藏它并仍然可以在伴随对象内访问它.
谁能告诉我这里我做错了什么?
我有以下代码
package myPackage;
import org.neo4j.graphdb;
import org.neo4j.kernel.EmbeddedGraphDatabase;
public class dbServlet extends HttpServlet {
public void init() throws ServletException {
// Start up the database here
GraphDatabaseService graphDb = new EmbeddedGraphDatabase("var/base");
}
public void destroy() {
graphDb.shutdown();
}
Run Code Online (Sandbox Code Playgroud)
和 build.xml 文件:
<project name="dbServlet" basedir="." default="compile">
<property name="src.dir" value="src"/>
<property name="lib.dir" value="lib"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
</target>
</project> …Run Code Online (Sandbox Code Playgroud)