确定检查条件中检查的内容和未检查的异常是什么?

时间:2015-03-11 16:38:03

标签: java exception checked-exceptions

我正在攻读Java助理考试,我正在努力确定在考试条件下检查什么和未选中的内容。我知道如果我可以从我在这里阅读的内容编写代码,我可以查找或执行instanceof - 但有一种简单的方法可以确定它。我已经捡到了一些,但发现很难记住它们。以下是依赖于这些知识的问题的考试。

public static String readData (Path filePath)
  throws IOException, IllegalArgumentException {
     //implementation omitted
}

将编译哪两个代码片段?

public static void main(String[] args) {
 try {
      readData(Paths.get("test"));
 } catch (IllegalArgumentException ex) {
      System.err.println(ex);
 }
}

public static void main(String[] args)
  throws IOException{
 readData(Paths.get("test.txt"));
}

public static void main(String[] args)
  throws IllegalArgumentException{
 readData(Paths.get("test.txt"));
}

public static void main(String[] args) {
 readData(Paths.get("test.txt"));
}

public static void main(String[] args) {
try {
 readData(Paths.get("test"));
 } catch (IOException ex) {
      System.err.println(ex);
 }
}

1 个答案:

答案 0 :(得分:0)

Checked Exceptions是在编译时检查的异常。如果方法中的某些代码抛出已检查的异常,则该方法必须处理异常,或者必须使用throws关键字指定异常。 像FileNotFoundException(IOException的子类)这样的异常会被检查异常,它应该在代码中处理。

未选中是在编译时未检查的异常。 在Java中,Error和RuntimeException类下的异常是未经检查的异常,检查throwable下的所有其他内容。

因此,对于您给出的问题,IOException是一个已检查的异常,而IllegalArgumentException是一个未经检查的异常。 答案是:第二选项和最后一个选项

Correct Answers: 
public static void main(String[] args)
  throws IOException{
 readData(Paths.get("test.txt"));
}

public static void main(String[] args) {
try {
 readData(Paths.get("test"));
 } catch (IOException ex) {
      System.err.println(ex);
 }
}

因此,对于任何Exception来查找或取消选中它,你可以保持它 如果由于任何用户输入或在编译时未知的任何其他外部值而发生异常将被取消选中。其他例外是​​检查例外

例如,如果Argument是非法的,则会出现IllegalArgumentException。在编写代码时你不知道参数,并且它不是预期的。所以,这是一个未经检查的例外。

您可以将上述规则应用于此列表中的所有例外

未选中

ArrayIndexOutOfBoundsException异常

ClassCastException

IllegalArgumentException

IllegalStateException

NullPointerException

NumberFormatException

AssertionError

ExceptionInInitializerError

StackOverflowError

NoClassDefFoundError