相关疑难解决方法(0)

异常和错误之间的差异

我正在尝试更多地了解基本Java和不同类型的Throwables,有人能告诉我异常和错误之间的区别吗?

java exception throwable

162
推荐指数
6
解决办法
8万
查看次数

如何在java中的if-else函数中引发错误

我所做的所有谷歌搜索似乎都集中在"捕捉"错误上.如果满足某些条件,我希望能够提高自己.我尝试使用Error()类及其子类,但Eclipse无法识别它们.

这就是我想要做的:

if(some_condition) {
    foobar();
}
else {
    // raise an error
}
Run Code Online (Sandbox Code Playgroud)

愚蠢的问题,我知道,但我已经完成了我的谷歌搜索,我认为有人可以帮助我.

提前致谢!


感谢大家!如果你将来读这篇文章,这里是瘦的:

  1. Java中的错误指的是您不应该尝试捕获的问题

  2. 例外是指您可能想要捕获的错误.

这是我的"修复"代码:

if(some_condition) {
    foobar();
}
else {
    throw new RuntimeError("Bad.");
}
Run Code Online (Sandbox Code Playgroud)

RuntimeError()之所以使用是因为,正如一个答案所指出的那样,我不必事先声明我正在抛出一个错误,因为我依赖于一个条件,这非常有用.

谢谢大家!

java exception custom-errors

19
推荐指数
2
解决办法
5万
查看次数

在java中按字母顺序排序文件"数字"

我有一个文件夹,其中包含以时间戳命名的文件.

当我尝试浏览每个文件时,它按字母顺序排序并给我这个顺序:

/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)

是否有一些(最好是简单的)循环文件的方式,我想循环它们?

java

5
推荐指数
2
解决办法
5370
查看次数

Java OutOfMemoryError未被捕获Error和Throwable的子句捕获

当我运行下面的代码时,抛出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异常没有被捕获?" …

java out-of-memory

4
推荐指数
2
解决办法
1734
查看次数