考虑到这一点的代码,我可以绝对肯定的是,finally块总是执行,不管something()是什么?
try {
something();
return success;
}
catch (Exception e) {
return failure;
}
finally {
System.out.println("I don't know if this will get printed out");
}
Run Code Online (Sandbox Code Playgroud) 我今天早上为我的java认证编写了一些练习程序,并注意到我输错了包名,所以它与java文件所在的子目录不匹配.我编译代码期待错误,但所有编译文件 - - 甚至没有警告.
我google了一下,我读到的大多数页面都说包名必须与子目录相匹配.我的经验表明情况并非如此.
当我尝试运行该程序时,它不起作用,因为.class文件位于错误的目录中.我将它移动到正确的目录,并得到此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sample/directory
/doesnt/even/exist/OtherPackageMemberModifiers (wrong name: com/sample/chap01/O
therPackageMemberModifiers)
Run Code Online (Sandbox Code Playgroud)
所以我认为我看到的是,如果软件包和子目录不匹配,Java代码将编译,但如果你这样做,似乎没有办法运行代码.那是对的吗?
今天我正在乱搞java.io.File方法,偶然发现了一些奇怪的东西.
当我重命名目录时,我似乎无法删除文件或新目录.
File dir = new File("dir");
dir.mkdir();
File file = new File(dir, "afile.txt");
file.createNewFile();
File newname = new File(dir, "newName.txt");
file.renameTo(newname);
File newdir = new File("newdir");
dir.renameTo(newdir);
System.out.println("file exists? " + file.exists());
System.out.println("file deleted? " + file.delete());
System.out.println("newname exists? " + newname.exists());
System.out.println("deleted newname? " + newname.delete());
System.out.println("dir exists? " + dir.exists());
System.out.println("dir deleted? " + dir.delete());
System.out.println("newdir exists? " + newdir.exists());
System.out.println("deleted newdir? " + newdir.delete());
Run Code Online (Sandbox Code Playgroud)
产量输出:
file exists? false
file deleted? false
newname exists? false
deleted newname? …Run Code Online (Sandbox Code Playgroud)