- 第一遍抛出RuntimeException,编译可以通过
- class Send implements Runnable
- {
- private DatagramSocket ds;
- public Send(DatagramSocket ds)
- {
- this.ds = ds;
- }
- public void run()
- {
- BufferedReader bufr;
- try
- {
- bufr = new BufferedReader(new InputStreamReader(System.in));
- String line = null;
- while((line = bufr.readLine())!=null)
- {
- if("886".equals(line))
- break;
- byte[] buf = line.getBytes();
- DatagramPacket dp =
- new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.5"),10002);
- ds.send(dp);
- }
- }
- catch (Exception ioe)
- {
- throw new RuntimeException("send fail"); //这个地方如果是抛出不是Runtime
- }
- }
- }
- 第二遍抛出非RuntimeException,程序出现矛盾,不知如何解决,编译不能通过
- class Send implements Runnable
- {
- private DatagramSocket ds;
- public Send(DatagramSocket ds)
- {
- this.ds = ds;
- }
- public void run() throws Exception //因为程序内捕获到异常,在此处抛出,但是又因为这个方法是重写,run()并没有异常抛出,所以不能在此添加throws代码
- //这里就出现了问题,是说这个run()方法只可能抛出RuntimeExcepton,还是需要对其他异常进行什么处理
- {
- BufferedReader bufr;
- try
- {
- bufr = new BufferedReader(new InputStreamReader(System.in));
- String line = null;
- while((line = bufr.readLine())!=null)
- {
- if("886".equals(line))
- break;
- byte[] buf = line.getBytes();
- DatagramPacket dp =
- new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.5"),10002);
- ds.send(dp);
- }
- }
- catch (Exception ioe)
- {
- throw new Exception("send fail"); //这个地方我假设抛出非RuntimeException,可以不可以呢?
- }
- }
- }
- 错误提示:
- ChatDemo.java:12: 错误: Send中的run()无法实现Runnable中的run()
- public void run() throws Exception
- ^
- 被覆盖的方法未抛出Exception
复制代码 这是我一个程序中的一部分代码,我想知道如果被覆盖的方法没有抛出异常,我的重写方法是抛出RuntimeException,或者对异常进行处理,这两种思路么?
|