run函数不是你新定义的,而是实现接口Runnable中的,而接口Runnable中的那个接口函数原型中并没有throw什么异常,所以,你这样作是不可以的。否则,当时从Runnable接口上使用你的对象时,就会有2未捕获的异常,从而产生语言的混乱,是不是?
解决方案 »
- 望高手能以下面例子解释下锁机制
- MyEclipseUML插件导入问题 急!
- 请教!Socket连接中,从输入流中读取数据时,如何判断read()是否阻塞?
- 简单问题。。
- 异常由谁抛出的呀 ????????????????
- 怎样通过JNI的java端调试VC端dll中的函数
- 关于display tag的列的显示长度的问题
- java的重拾者
- 如何设置jTextField中text也就是文字的大小,即宽和高,和外边放他的容器的宽和高一样!!
- 各位,先祝节日快乐,顺便提个小问题!
- 如何控制一个JTextField中输入的字符(或数字)不超过15位?我是这样做的,高手过来瞧一眼!
- 初学者问题(别骂我低能)
这个如何解释呢
如果你是定义另外一个函数,比如:public void run(int i),那么你爱抛啥异常就抛啥异常。但问题是,这样的函数从runnable接口上是调不到的,换句话说,几乎是没用的。
一旦你的方法被声明为可能抛出异常,别人调用时就必须使用try/catch。至少Java里头时这样的。sorry,前面说错了,不是重载,是override(我也不知道到底那种翻译更好)。
try{
...
}
catch(A a){
...
}
catch(B b){
...
}
同时,你不想在方法体内部处理C和D异常,就该在方法声明的后面throws这两个异常,比如
public void myMethod() throws C,D{
try{
...
}
catch(A a){
...
}
catch(B b){
...
}
}
如果想所有异常都在方法内部处理,就都放在catch中,不用写throws,如果都不想放在方法内部处理,就不用写try/catch,而是都写在throws后面这么说能明白了吧?
当内部try 有异常 而没有catch,那么就要throws一下,好让使用它的处理这个异常