我正在尝试更多地了解基本Java和不同类型的Throwables,有人能告诉我异常和错误之间的区别吗?
我所做的所有谷歌搜索似乎都集中在"捕捉"错误上.如果满足某些条件,我希望能够提高自己.我尝试使用Error()类及其子类,但Eclipse无法识别它们.
这就是我想要做的:
if(some_condition) {
foobar();
}
else {
// raise an error
}
Run Code Online (Sandbox Code Playgroud)
愚蠢的问题,我知道,但我已经完成了我的谷歌搜索,我认为有人可以帮助我.
提前致谢!
感谢大家!如果你将来读这篇文章,这里是瘦的:
Java中的错误指的是您不应该尝试捕获的问题
例外是指您可能想要捕获的错误.
这是我的"修复"代码:
if(some_condition) {
foobar();
}
else {
throw new RuntimeError("Bad.");
}
Run Code Online (Sandbox Code Playgroud)
我RuntimeError()之所以使用是因为,正如一个答案所指出的那样,我不必事先声明我正在抛出一个错误,因为我依赖于一个条件,这非常有用.
谢谢大家!
我有一个文件夹,其中包含以时间戳命名的文件.
当我尝试浏览每个文件时,它按字母顺序排序并给我这个顺序:
/home/user/buffereddata/1
/home/user/buffereddata/100
/home/user/buffereddata/1000
/home/user/buffereddata/200
/home/user/buffereddata/2000
/home/user/buffereddata/300
Run Code Online (Sandbox Code Playgroud)
但我希望它们像这样排序:
/home/user/buffereddata/1
/home/user/buffereddata/100
/home/user/buffereddata/200
/home/user/buffereddata/300
/home/user/buffereddata/1000
/home/user/buffereddata/2000
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
File file = new File(System.getProperty("user.home") + "/buffereddata");
if(file.exists()) {
File[] fileArray = file.listFiles();
Arrays.sort(fileArray);
for(File f : fileArray) {
System.out.println(f);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有一些(最好是简单的)循环文件的方式,我想循环它们?
当我运行下面的代码时,抛出OutOfMemoryError,但是没有被捕获,尽管有一些条款应该捕获它:
public class SomeClass {
public static void main(String[] args) {
try {
//Allocate a huge amount of memory here
} catch (OutOfMemoryError oome) {
System.out.println("OutOfMemoryError=<" + oome + ">");
} catch (Error err) {
System.out.println("Error=<" + err + ">");
} catch (Throwable t) {
System.out.println("Throwable=<" + t + ">");
} finally {
System.out.println("'Finally' clause triggered");
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出如下:
'Finally' clause triggered
Exception in thread "main"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"
Run Code Online (Sandbox Code Playgroud)
没有抓住异常这一事实对我来说毫无意义.该的OutOfMemoryError文档确认异常应该由任何Throwable的,错误或OutOfMemoryError异常捕获.(请注意,"java.lang."说明符不会影响行为.)
我在StackOverflow上看到的所有其他问题都是"为什么我的OutOfMemoryError异常没有被捕获?" …