Страницы

Поиск по вопросам

суббота, 28 декабря 2019 г.

Требует return, а он находится в блоке if

#java #android


class SenderThread extends AsyncTask {
@Override
protected String doInBackground(String... params) {
    try{
        // Создаем сокет
        Socket socket=new Socket("192.168.0.102",6666);
        if(socket.getKeepAlive() == true) {
            // Получаем потоки ввод/вывода
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();
            DataInputStream in = new DataInputStream(sin);
            DataOutputStream out = new DataOutputStream(sout);
            String line;
            out.writeUTF("getRandomNumber");
            out.flush();
            line = in.readUTF();
            return line.toString();
        }

}catch(Exception ex)
    {
        return ex.toString();
    }

  }// тут требует return
}


Мне нужно возвращать конкретно line или ex. Спасибо 
    


Ответы

Ответ 1



Прежде всего Вам нужно решить, что нужно делать с переменной, если не выполняется условие socket.getKeepAlive() == true. Если невыполнение этого условия является ошибкой, то Вам следует выбросить некоторый Exception: throw new Exception("Socket not alive!"); Или, если это не является ошибкой и Вам нужно вернуть просто какую-то дефолтную или пустую строку или null можете прописать в блоке else сделать return. Например: } else { return null; //or return ""; //or return "default String"; } Также, как уже было сказано предыдущим участником - если Вам нужно вернуть какой-то default-значение, то Вы можете инициализировать переменную ДО блока try.

Ответ 2



Инициализируйте свою переменную перед try String line = null; try { //line = ... } catch { } return line

Комментариев нет:

Отправить комментарий