2012-06-11 2 views
2

Во-первых, я хотел бы сказать, что я извиняюсь за столь двусмысленным названием ...Java обработка исключений (например, с помощью JSON)

Я хотел бы знать, как обрабатывать исключения в следующем сценарии ... у меня есть действие Struts, который принимает строку из EJB:

try{  
    JSONObject data = new JSONObject(result); //result is String 
    String gatewayId = data.getString("gatewayId"); 
    session.setAttribute("gatewayId", gatewayId); 
}catch(Exception e){ 
    System.out.println(e.getMessage()); 
} 

EDIT Импорт являются:

import org.apache.struts2.json.*; 
import org.json.*; 

В случае А JSON является:

{"gatewayId":100, "mask":4} 

В случае B JSON является:

{"success":false, "errorDesc":"bla bla"} 

Если gatewayId находится в формате JSON у меня нет проблем, но проблема заключается в том, что JSON, полученные от EJB может (но не обязательно) иметь эту пару: значение.

Если существует метод Boolean JsonObject.hasString() я не буду иметь никаких исключений благодаря проверке существования строки первому, если/иначе, если заявления, но таким образом я не могу обойтись без исключений ...

Первое, что я думал, что я мог сделать, чтобы иметь различные уловах блоки в зависимости от типа исключения, но это, кажется, что все исключения из общего JSONException типа, а также не должны помещать JSON обработки кода в потому что этот код также может бросать его исключения.

Пожалуйста, имейте в виду, что я не ищу точное решение моей проблемы JSON здесь, а скорее общее объяснение того, как решить такие проблемы, когда у вас нет функций, которые помогут вам избежать исключения ...

Я надеюсь, что мой вопрос имеет смысл ....

+0

перед тем, как положить в объект json, не могли бы вы отобразить результат и сообщить мне, что у вас есть? –

+0

Luigi, для полноты PLS включает оператор импорта, который позволяет вам ссылаться на JSONObject. Также было бы полезно иметь упрощенный образец строки JSON, которую вы обрабатываете. –

ответ

3

попробовать

data.has("gatewayId"); 

это помогло бы.

+0

Pankraj, спасибо ... это было бы решением этой конкретной проблемы, но представьте, что библиотека не имела метода data.has(). Я знаю, что это была бы плохая библиотека тогда :) Исключение было бы выбрано, если json-ключ не найден ... В основном вопрос заключается в том, можете ли вы использовать блоки catch в качестве управления потоком? каким-то образом? :) – luigi7up

Смежные вопросы