java – 为什么需要处理Thread.sleep()的异常?
发布时间:2020-12-14 05:20:07 所属栏目:Java 来源:网络整理
导读:要得到这个代码进行编译,我可以: 把我的电话号码 Thread.sleep() 放在try / catch块里,或者 printAll()声明它可以抛出一个 InterruptedException . 为什么要这样做? class Test { public static void main( String[] args ) { printAll( args ); } public
要得到这个代码进行编译,我可以:
>把我的电话号码 为什么要这样做? class Test { public static void main( String[] args ) { printAll( args ); } public static void printAll( String[] line ) { System.out.println( lines[ i ] ); Thread.currentThread().sleep( 1000 ): } } (Kathy Sierra’s SCJP book的示例代码) 我知道Thread.sleep()抛出的异常是一个被检查的异常,所以我必须处理它,但在什么情况下Thread.sleep()需要抛出这个异常? 解决方法
如果以一种方式声明方法可以抛出已检查的异常(异常不是RuntimeException的子类),调用它的代码必须在try-catch块中调用它,或者调用方法必须声明抛出它.
public static void sleep(long millis) throws InterruptedException; 它可能会抛出 为什么Thread.sleep()以这种方式声明?因为如果 例: Thread t = new Thread() { @Override public void run() { try { System.out.println("Sleeping..."); Thread.sleep(10000); System.out.println("Done sleeping,no interrupt."); } catch (InterruptedException e) { System.out.println("I was interrupted!"); e.printStackTrace(); } } }; t.start(); // Start another thread: t t.interrupt(); // Main thread interrupts t,so the Thread.sleep() call // inside t's run() method will throw an InterruptedException! 输出: Sleeping... I was interrupted! java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) at Main$1.run(Main.java:13) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- rx-java – 在RxJava中取消Observable
- java自定义任务类定时执行任务示例 callable和fu
- java – 将给定数字M随机分成N个部分
- Java Socket编程实例(三)- TCP服务端线程池
- java – JTextFields在JPanel上的活动绘图上,线程
- java – Google Cloud Platform:无法从Contai
- java – Amazon SNS – > SQS消息体
- java – 将byte []转换为ArrayList
- java-配置CsvMapper以检查每个写入的值
- java.io.DataInput接口和java.io.DataOutput接口
热点阅读