Morez:
私は以下のコードをしようとしているが、それは私がメインメソッドのソケットオブジェクトの外を初期化することはできません。誰かが私に問題を説明していただけますか?
import java.net.DatagramSocket;
public class Server
{
DatagramSocket socket = new DatagramSocket();
public static void main(String[] args) {
Server server = new Server();
//server.socket = new DatagramSocket(); this is the suggested and working way
}
}
/*The error is : error: unreported exception SocketException; must be caught or declared to be thrown
DatagramSocket socket = new DatagramSocket();*/
私はmainメソッドの外に他のオブジェクトを初期化するときにエラーが発生するのはなぜないのですか?すべてのオブジェクトは、mainメソッド内で初期化されるべきか?
更新日: どのような私をcounfusedすることへの答えであるこの質問:「一般的に、あなたは外のメソッドのオブジェクトを作成しない-メインまたはそれ以外の場合は。だから、他のいくつかの方法の内側、外側のメインのオブジェクトを作成することができます。」
なぜそれが問題でしょうか?
ジェイソン:
問題は、DatagramSocketのコンストラクタはThrowableのをキャッチする必要がありますようにのSocketExceptionをスローしていることです。あなたは、クラスメンバーとしてのThrowableをキャッチすることはできません。