#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
Комментариев нет:
Отправить комментарий