当前位置: 技术问答>java相关
奇怪,Java中如何判别一个没有明确说明会抛出异常的函数到底会不会抛出异常
来源: 互联网 发布时间:2015-09-27
本文导语: 在编程时看jdk文档,介绍函数时有的明确说明函数会抛出异常,如String的charAt(int) 而有的没有说明如String 的length(),还有其他函数,我以前都认为没有说明的都不会抛出异常,最近发现,length()确实抛出异常(当string...
在编程时看jdk文档,介绍函数时有的明确说明函数会抛出异常,如String的charAt(int)
而有的没有说明如String 的length(),还有其他函数,我以前都认为没有说明的都不会抛出异常,最近发现,length()确实抛出异常(当string为null时),请问如何确定一个函数到底有没有抛出异常,有没有其他的文档说明了象length()这样的函数会抛出异常
而有的没有说明如String 的length(),还有其他函数,我以前都认为没有说明的都不会抛出异常,最近发现,length()确实抛出异常(当string为null时),请问如何确定一个函数到底有没有抛出异常,有没有其他的文档说明了象length()这样的函数会抛出异常
|
那是因为你string是空的,没有实例化,在你使用时这个串时,对串抛出的异常,和函数没关系!
|
java抛出异常,是由他规律的,就你提的问题简单来说是,如果你调用的函数在声明的时候声明了抛出的异常,那么调用他的函数就必须要显示的捕捉或者继续抛出这个异常,相反则可以放弃;程序在执行过程用会有运行异常或错误,这种异常是不强迫捕捉的。但如果出现错误,一样会抛出异常。具体内容可以看一下thinking in java中的相关内容。
|
RuntimeException不用声明也会在运行时产生了的话抛出;没有生命你要抛出异常也可以的。throws是说明你需要别人处理可能的异常,不说明就是你不声明要别人处理(但可以抛出)。
|
老大,这样试试:
void x()
{
try {
y();//不能确定一定抛出异常
z();//不能确定一定抛出异常
m();//不能确定一定抛出异常
n();//不能确定一定抛出异常
p();//不能确定一定抛出异常
} catch (Throwable t) {
t.printStackTrace();
//...
}
}
有异常的话,可从堆栈跟踪里清楚地看到是y,z,m...的那个出了错
void x()
{
try {
y();//不能确定一定抛出异常
z();//不能确定一定抛出异常
m();//不能确定一定抛出异常
n();//不能确定一定抛出异常
p();//不能确定一定抛出异常
} catch (Throwable t) {
t.printStackTrace();
//...
}
}
有异常的话,可从堆栈跟踪里清楚地看到是y,z,m...的那个出了错
|
java.lang.Object
|
+-java.lang.Throwable
|
+-java.lang.Exception(一定要catch或者throws)
|
+-java.lang.RuntimeException(JVM会自己处理,当然也可以自己处理)
|
+-java.lang.Throwable
|
+-java.lang.Exception(一定要catch或者throws)
|
+-java.lang.RuntimeException(JVM会自己处理,当然也可以自己处理)
|
学到东西啦
|
除了java.lang.RuntimeException会偶尔冒出来之外,所有的异常都有说明,不会出现凭空出异常的情况,楼主的问题是由于变量为null引起的与函数无关,可以说都没有走到函数处就异常了
|
楼主是不是以前是VC或者VB高手啊?可能对于错误处理还是那么的津津乐道,在java里你可以省很多事了。用不这么费神的。
|
违例控制只是防止异常情况发生导致程序中断,不太好作为流程控制的一种方法来用。
|
up
我可不那样认为,我认为一个好的程序是可以在违例中写流程控制的,在违例中写流程控制不但不是不好,而且是非常好,我以前做过的一个项目就有在catch{}里写出的流程.楼上的很多位大侠说的都很好.可以学习学习.
我可不那样认为,我认为一个好的程序是可以在违例中写流程控制的,在违例中写流程控制不但不是不好,而且是非常好,我以前做过的一个项目就有在catch{}里写出的流程.楼上的很多位大侠说的都很好.可以学习学习.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。