Android 未处理的异常类型MalformedURLException

Android 未处理的异常类型MalformedURLException,android,sockets,io,system,Android,Sockets,Io,System,我在尝试Socket.io时遇到了一个错误的DurLexException 我的代码连接到SocketIO服务器,这是它的标准代码 这是我的代码: import java.net.MalformedURLException; import org.json.*; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import io.socket.*; @SuppressWarning

我在尝试Socket.io时遇到了一个错误的DurLexException

我的代码连接到SocketIO服务器,这是它的标准代码

这是我的代码:

import java.net.MalformedURLException;
import org.json.*;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import io.socket.*;

@SuppressWarnings("unused")
public class HostActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_host);
        SocketIO socket = new SocketIO("http://MYSOCKETSERVER/");
        socket.connect(new IOCallback() {
            @Override
            public void onMessage(JSONObject json, IOAcknowledge ack) {
                try {
                    System.out.println("Server said:" + json.toString(2));
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onMessage(String data, IOAcknowledge ack) {
                System.out.println("Server said: " + data);
            }

            @Override
            public void onError(SocketIOException socketIOException) {
                System.out.println("an Error occured");
                socketIOException.printStackTrace();
            }

            @Override
            public void onDisconnect() {
                System.out.println("Connection terminated.");
            }

            @Override
            public void onConnect() {
                System.out.println("Connection established");
            }

            @Override
            public void on(String event, IOAcknowledge ack, Object... args) {
                System.out.println("Server triggered event '" + event + "'");
            }
        });

        // This line is cached until the connection is establisched.
        socket.send("Hello Server!");

}
这一行显示:

SocketIO socket = new SocketIO("http://MYSOCKETSERVER/");
我认为这个url看起来很有用,但为什么会出现这个错误,以及如何解决它呢?
谢谢

使用以下方法修复了它:

        try {
    SocketIO socket = new SocketIO("http://SOCKETIOSERVER/");
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    }

畸形异常有两种情况:

  • 如果您在URL中犯了一些错误,比如忘记了斜杠或(http/https)协议的拼写错误
  • 如果URL不可解析
  • 在本例中,SocketIO将URL字符串作为输入。由于Java会抛出潜在错误的异常,所以如果出现这种情况,您需要处理它。这就是编译器抛出此异常的原因

    在您的例子中,您已经硬编码了值,但编译器对此不确定,或者您的代码正在运行到前面提到的场景中


    因此,抛出此异常将执行前面提到的修复操作。

    是否可以包括畸形异常的堆栈跟踪?