【问题标题】:Unhandled exception type MalformedURLException未处理的异常类型 MalformedURLException
【发布时间】:2012-12-22 18:20:33
【问题描述】:

我在尝试 Socket.io 时遇到了 MalformedURLException

我的代码连接到一个 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 看起来很有效,但是为什么会出现这个错误以及如何解决它? 谢谢

【问题讨论】:

  • 能否包含 MalformedURLException 的堆栈跟踪?

标签: android sockets io system


【解决方案1】:

使用这个修复它:

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

【讨论】:

    【解决方案2】:

    MalformedURLException有两种情况:

    1. 如果您在 URL 中犯了一些错误 - 例如忘记斜杠或 (http/https) 协议的拼写错误。
    2. 如果 URL 不可解析。

    在这种情况下,SocketIO 将 URL 字符串作为输入。由于 Java 会为潜在的错误抛出异常,因此如果出现这种情况,您需要进行处理。这就是编译器抛出此异常的原因。

    在您的情况下,您已经对值进行了硬编码 - 但编译器对此不确定,或者您的代码可能正在运行前面提到的那些场景。

    所以抛出这个异常可以解决问题 - 正如Christiaan 提到的那样。

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多