一个线程中的异常问题,对throws关键字理解还不够深刻,请大家指教,附源程序 run函数不是你新定义的,而是实现接口Runnable中的,而接口Runnable中的那个接口函数原型中并没有throw什么异常,所以,你这样作是不可以的。否则,当时从Runnable接口上使用你的对象时,就会有2未捕获的异常,从而产生语言的混乱,是不是? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是说非runtimeException ,必须都先声明吗?这个如何解释呢 不是声明不声明的问题,这个run方法就是不可以抛出任何异常,因为Runble接口中的方法原型已经规定了,除非你定义另外一个。而不是重载这个public void run()。如果你是定义另外一个函数,比如:public void run(int i),那么你爱抛啥异常就抛啥异常。但问题是,这样的函数从runnable接口上是调不到的,换句话说,几乎是没用的。 还是不明白throws和try/catch有什么联系,何时该用throws? 当你的方法会throw异常,那么就必须把可能throw出来的异常声明出来,否则当然没必要了。一旦你的方法被声明为可能抛出异常,别人调用时就必须使用try/catch。至少Java里头时这样的。sorry,前面说错了,不是重载,是override(我也不知道到底那种翻译更好)。 现在先假设你已经写好了一个方法的方法体,除了异常处理机制之外,也就是说还没写try/catch或者throws。假设这个方法的这段代码可能抛出多种异常,比如有A,B,C,D四种异常。这时,如果你想在方法内部处理某个异常,你就应该使用try/catch捕捉这个异常。比如你想在方法内部处理A和B异常,就该这样: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后面这么说能明白了吧? 如果已经catch某个异常,java就会认为这个方法不会再向外界抛出,就没必要再throws这个异常,就会报错,除非你在catch这个异常的时候又抛出这个异常 估计是不是这样的,当内部try 有异常 而没有catch,那么就要throws一下,好让使用它的处理这个异常 新手问题 在线等!!!!!帮帮忙啦! 【新手提问】SQL删除无效,百思不得其解.求高手帮忙 java如何的当前程序占用的内存情况? 怎样把源文件中所需注释掉的行注释掉! 谢谢! 抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数??为什么?? 请教各位,为什么JLabel上重画时会出现部分被擦除! 有没有西安的java 程序员 听说微软以后版本的Windows不支持Java,我这个初学者应该怎么办? 请帮忙看看这短程序! Java Socket序列化对象的问题 如何控制一个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一下,好让使用它的处理这个异常