当前位置: 技术问答>java相关
急急急!关于异常的问题!
来源: 互联网 发布时间:2015-03-06
本文导语: 大家看看,我自己写了一个程序,用来理解throw/throws/try-catch的概念,不过我觉得有个问题 import java.io.*; public class SL275 { public static void main(String[] args) { // 下面是异常处理 try { in...
大家看看,我自己写了一个程序,用来理解throw/throws/try-catch的概念,不过我觉得有个问题
import java.io.*;
public class SL275
{
public static void main(String[] args)
{
// 下面是异常处理
try
{
init();
}
catch(IOException e)
{
System.out.println("The main method had caught a IOException.");
}
// 上面是异常处理
}
public static void init() throws IOException
{
System.out.println("This is method init.");
if (true)
throw new IOException("Exception!!!");
}
}
运行结果是:
This is method init.
The main method had caught a IOException.
也就是说init()里throw了一个异常,自己没有catch,交给了调用init()的main()处理,而main()里有catch,就处理了异常。
但是如果把main()两段注释中间的try catch去掉,即不要处理init()抛出的IO异常,按道理不是说编译都通不过吗?为什么去掉后编译也通过了呢?
请高手解释一下
import java.io.*;
public class SL275
{
public static void main(String[] args)
{
// 下面是异常处理
try
{
init();
}
catch(IOException e)
{
System.out.println("The main method had caught a IOException.");
}
// 上面是异常处理
}
public static void init() throws IOException
{
System.out.println("This is method init.");
if (true)
throw new IOException("Exception!!!");
}
}
运行结果是:
This is method init.
The main method had caught a IOException.
也就是说init()里throw了一个异常,自己没有catch,交给了调用init()的main()处理,而main()里有catch,就处理了异常。
但是如果把main()两段注释中间的try catch去掉,即不要处理init()抛出的IO异常,按道理不是说编译都通不过吗?为什么去掉后编译也通过了呢?
请高手解释一下
|
是啊,java中的异常抛出后,由调用它的方法来捕获,如果调用他的方法没有捕获,那么这个方法又会把这个异常向外抛,又由调用这个方法的方法来捕获,依次类推,如果谁都没有捕获,就到了控制台了
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。