【问题标题】:Default constructor cannot handle exception type SocketException thrown by implicit super constructor默认构造函数无法处理隐式超级构造函数抛出的异常类型 SocketException
【发布时间】:2014-07-10 21:59:39
【问题描述】:

我正在开发一款能够通过同时拨打电话和发送包裹手动在 3G 和 4G 之间切换的 Android 应用。当我结束通话时,包裹将继续发送,使手机保持 3G,但是当我按下按钮时,它会终止包裹。

我对大部分代码都很好,但是我让程序从其他人那里发送包,我对如何让它运行有点困惑,特别是我在声明时遇到的这个错误socket 字段。我收到一条错误消息,提示“默认构造函数无法处理隐式超级构造函数抛出的异常类型 SocketException。必须定义显式构造函数。”

这是我的包类文件:

package com.example.derpphone;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.TimerTask;
public class timer extends TimerTask {


    DatagramSocket socket = new DatagramSocket();
    @Override
    public void run() {     
                if (socket != null) {
                                   byte[] bytes = new byte[100];
                    SocketAddress serverAddress = new InetSocketAddress("131.179.176.74",
                            9998);
                    try {
                        DatagramPacket packet = new DatagramPacket(bytes,
                                bytes.length, serverAddress);
                        socket.send(packet);                    

                    } catch (Exception e) {

                    }
                }
            }
}

【问题讨论】:

标签: java android eclipse


【解决方案1】:

将您的代码更改为:

DatagramSocket socket; 

public timer() throws Exception {
    socket = new DatagramSocket();
}

当你写作时:

DatagramSocket socket = new DatagramSocket();

没有默认构造函数,相当于:

DatagramSocket socket;

public timer() {  
    super();
    socket = new DatagramSocket();
}

由于 DatagramSocket 构造函数抛出异常,需要捕获或声明。

【讨论】:

    【解决方案2】:

    意思是

    DatagramSocket socket = new DatagramSocket();
    

    可能会抛出一个SocketException,因为默认构造函数DatagramSocket()是这样声明的,它必须被处理或重新抛出,并且没有办法像这样处理它,所以你需要一个构造函数围绕它

    改成

    DatagramSocket socket;
    
    public timer throws SocketException { 
        this.socket = new DatagramSocket();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 2010-11-14
      相关资源
      最近更新 更多