在方法内尝试/ catch块

时间:2014-12-26 22:39:59

标签: java android

我有一个班级,我在这个班级里面有一个方法。

方法:

public void login(String username,String password) throws XMPPException, SmackException, IOException {
    ConnectionConfiguration configuration=new ConnectionConfiguration("", 5222,"localhost");
    configuration.setSecurityMode(SecurityMode.disabled);
    connection=new XMPPTCPConnection(configuration);
    try {
        connection.connect();
        connection.login(username,password);
        ChatManager chatmanager = ChatManager.getInstanceFor(connection);
        chatmanager.addChatListener(new ChatManagerListener() {
            public void chatCreated(final Chat chat, final boolean createdLocally) {
                chat.addMessageListener(messageListener);
            }
        });
    }                       
    catch (XMPPException | SmackException | IOException e) {
        e.printStackTrace();
    }
}

Xmpp需要try / catch块。我在方法中定义了try / catch。但是当我尝试在主类中使用这个方法时,我收到了编译错误:

Unhandled exception type IOException

我这样使用:

SmackClass smack=new SmackClass();
smack.login("asdad","asdasd");

如何解决此问题?

3 个答案:

答案 0 :(得分:1)

XMPPException, SmackException, IOException

login方法的throws子句中删除它们。

它们导致主类中的编译时错误。

一般情况下,不要声明抛出这些例外 你已经在方法本身处理过了。

答案 1 :(得分:1)

如果你已经在throws XMPPException, SmackException, IOException方法中处理过,那么你的方法不应该声明login

答案 2 :(得分:0)

两种可能的解决方案

  1. 从方法中删除抛出异常
  2. 摆脱尝试并抓住方法并在主要方面使用它 下面:
  3.  public static void main(string[] args){
    try {
    SmackClass smack=new SmackClass();
    smack.login("asdad","asdasd");
    }
    catch (XMPPException | SmackException | IOException e) {
            e.printStackTrace();
        }
    }
    

    您没有处理异常,因为您的方法可以抛出它