什么`抛出IOExeption`做什么?

时间:2015-08-14 02:45:33

标签: java

导入文件时throws IOExeption实际上做了什么?

实施例

public static void main(String args[]) throws IOException {
    Scanner scanner = new Scanner(new File("C:\\Location"));
    // more code
    scanner.close();
}

4 个答案:

答案 0 :(得分:2)

throws表示方法要求调用者处理异常,或允许异常继续被调用到调用堆栈。前者需要能够在 try-catch 块中调用异常的方法;后者要求调用方法在其自己的方法签名中包含异常类型(例如IOException)。

在您的情况下,main(String[] args)在其签名中包含异常,这意味着它不计划处理异常,而是将其传递给堆栈。由于main是程序的入口点,因此没有其他任何东西可以处理异常,程序将终止。

答案 1 :(得分:1)

在Java中,IO类抛出一个名为IOException的已检查异常,例如说“找不到档案”。必须在try-catch块中处理已检查的异常,或者必须允许它通过声明您的方法可能导致引发该异常而冒泡到方法的调用方。

在你的书中,没有必要处理异常,所以简单地允许异常冒泡是最容易做到的。稍后您将了解更多相关信息。

答案 2 :(得分:1)

“导入”文件时,throws IOExeption实际上没有做任何事情。相反,它与失败“导入”文件时发生的情况有关。

当由于某种原因无法读取文件时,Scanner类会抛出IOException。但是,IOExceptionchecked exception。这意味着Java要求您在try/catch block中以某种方式处理异常。

当你声明throws IOException时,你告诉Java你将处理异常,而是允许它冒泡,并让你的方法的调用者来处理异常代替。

在这种特殊情况下,您已经使用main方法。因此,您将获得堆栈跟踪,应该抛出异常。

答案 3 :(得分:-1)

当你声明某个方法抛出异常时,你实际上是在说那个外面的代码(调用者中的调用者或他的祖先)这个方法是需要捕获异常的那个(也许没有人) ) 另外,在你的方法中,你需要使用“throw”关键词。

例如,调用代码 IS 捕获抛出的execption的情况:

class example
{
   static void method() throws IOExeption 
   {
     // in this code section you use the Scanner and from inside its code an
     // an IOExeption is thrown ( using "throw IOExecption;")
   } 
   public static void main(String args[])
   {
       try
       {
          method();
       }
       catch (IOExeption ioe)
       {
          // handle it however you want
       }
    }
}