这是什么意思 - > public static void main(String [] args)抛出IOException

时间:2017-04-28 05:02:13

标签: java core

当我们写这个 - > void add()抛出ArithmeticException。它表明methos add可能会也可能不会抛出ArithmeticException。所以调用方法必须编写try和catch块才能处理这种异常。那我们写这个是什么意思 - > public static void main(String [] args)抛出IOException。即使main方法抛出IOException,也没有调用methosd来处理它。那么当我们写主要方法时会出现异常是什么意思?

4 个答案:

答案 0 :(得分:0)

因为IOException是一个已检查的Exception,而main只是一个类似于其他任何方法的方法,因此如果在方法中抛出了已检查的Exception,则必须在方法签名中声明它。换句话说,main可能是入口点,但它也可以像任何方法一样调用,甚至作为入口点,它被JVM中的其他代码调用。

答案 1 :(得分:0)

主要方法与任何其他方法没有任何不同。它只是特殊的,因为它被定义为应用程序的入口点。如果它抛出异常,并且没有处理程序,您的程序将崩溃并停止运行。但是,有些情况下可以处理主要方法。例如:

public class a{
        public static void main(String[] args)throws IOException{
                throw IOException;
        }
}

//some other class:
String[] args = {};
new a().main(args);

答案 2 :(得分:0)

  

是什么意思 - > public static void main(String [] args)抛出   IOException的

这意味着,main方法没有捕获任何异常,而是通过将它抛出到调用main方法的源来处理IOException

如果您希望更高级的函数或调用函数处理它,则抛出Exception

记住,当你抛出Exception时异常不会消失,它必须通过调用函数来处理。否则它会使程序崩溃。

示例:

 public void iThrowException() throws Exception{
  throw new Exception("It has to be handled!");
}

无论何时想要调用此方法,都应该在try/catch块内调用 像这样

 public void iWillHandleIt(){
  try{
    iThrowException();
  }catch(Exception e){
    System.err.println("Exception caught: "+e);
  }
}

在你的情况下,如果你从main方法抛出Exception,main()方法的调用者,即; JVM需要处理异常。否则会导致崩溃。

如果你去扔Read more about Checked and UncheckedExceptions here

,你会更好

答案 3 :(得分:0)

SELECT
    AVG(CASE WHEN Gender = 'female' THEN SickLeaveHours ELSE NULL END) AS FSickLeave,
    AVG(CASE WHEN Gender = 'male'   THEN SickLeaveHours ELSE NULL END) AS MSickLeave
FROM Employees
GROUP BY Job
ORDER BY FSickLeave DESC;

其中this指定该方法可能会抛出IOException并坚持编译器调用此方法的块需要特别注意处理或再次丢弃。

抛出IOException:main方法中存在的逻辑执行一些与I / O相关的任务,并且为了确保程序不会因某些与I / O相关的问题而崩溃,这可以作为故障保护。或者,将负责的代码包装在try-catch构造中也是有效的。