java中的throw到底有什么用?
既然java中自己定义了异常,程序运行到有异常的时候也会报错,为什么还要用throw引发干啥?...
既然java中自己定义了异常,程序运行到有异常的时候也会报错,为什么还要用throw引发干啥?
展开
展开全部
throw在java中是关于异常的操作。
首先异常在java中的意思是一些可以导致程序出问题的因素,比如书写错误,逻辑错误或者是api的应用错误等等,为了防止程序的崩溃就要预先检测这些因素,所以java 使用了异常这个机制。
在java中异常是靠 "抛出" 也就是英语的"throw" 来使用的,意思是如果发现到什么异常的时候就把错误信息 "抛出"。
所以如果没有throw,发生异常,只能由java的最后一道防线jvm去处理,性质不一样。
扩展资料:
注意事项
throw代表动作,表示抛出一个异常的动作,throws代表一种状态,代表方法可能有异常抛出。throw用在方法实现中,而throws用在方法声明中,throw只能用于抛出一种异常,而throws可以抛出多个异常。
throw关键字用来在程序中明确的抛出异常,相反,throws语句用来表明方法不能处理的异常。每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。
展开全部
你编译的程序本身不能有效处理异常,只能由虚拟机jvm自动默认的处理方式;你定义的方法用throws声明了该方法可能存在的异常类型,暂时让java的编译器可以将该java文件正常编译成class文件,但是一旦运行class文件时,因为你的程序编译的不严谨,程序本身没有处理异常的机制,最后只能由jvm去默认的处理,一般默认的就是停止该程序运行,报出异常原因
程序编译,需要严谨,你如果将throw放在方法内部的catch()语句中,表示,你这个方法有了处理可能存在异常的机制,那就是一旦发生异常,方法内部的catch()语句直接捕捉了异常,并将异常类型的对象传递给该方法的调用处进行处理,方法调用处的catch语句直接会终止程序运行,抛出方法内部throw传递过来的异常;这属于程序本身自己检测到了异常而终止了程序运行。
说的再通俗一点,就是你方法内部如果用throw抛出异常对象,这表示你的程序本身有处理异常的能力。如果没有throw,发生异常,只能由java的最后一道防线jvm给你去处理! 性质不一样。
程序编译,需要严谨,你如果将throw放在方法内部的catch()语句中,表示,你这个方法有了处理可能存在异常的机制,那就是一旦发生异常,方法内部的catch()语句直接捕捉了异常,并将异常类型的对象传递给该方法的调用处进行处理,方法调用处的catch语句直接会终止程序运行,抛出方法内部throw传递过来的异常;这属于程序本身自己检测到了异常而终止了程序运行。
说的再通俗一点,就是你方法内部如果用throw抛出异常对象,这表示你的程序本身有处理异常的能力。如果没有throw,发生异常,只能由java的最后一道防线jvm给你去处理! 性质不一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-08-25
展开全部
直接上代码:
try{
//todo
}catch(Exception e){
//do log or other
throw new Exception(e);
}
try{
//todo
}catch(Exception e){
//do log or other
throw new Exception(e);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你可以在一个很普通的地方比如一个else if分支里抛异常,也可以在一个该抛异常的地方什么也不做。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-08-25
展开全部
没有引发,你觉得你捕捉到的异常是从哪来的
更多追问追答
追问
碰到一个数组越界异常,不throw难道就不提示异常吗?
追答
会出现异常,但只会有ArrayIndexOutOfBoundsException。如果你写了一个查找算法,在找不到元素的时候抛出异常,只抛出ArrayIndexOutOfBoundsException,谁知道是算法有问题还是设计就是如此,所以要catch然后throw一个不同的异常,表示算法没问题,但是就是没找到元素
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |