0

Chatlet Created
Chatlet Thrown
Inside reply
5684dc24617149a601dea913 Yes, Please let me in.
java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at com.teamchat.client.sdk.impl.TeamchatAPIImpl.invokeMethod(Unknown Source)
 at com.teamchat.client.sdk.impl.TeamchatAPIImpl.onMsg(Unknown Source)
 at com.teamchat.client.sdk.events.EventStreamConnector.onMsg(Unknown Source)
 at com.teamchat.client.sdk.impl.SimpleEventsExecutor.notifyCallbackMessage(Unknown Source)
 at com.teamchat.client.sdk.events.EventStreamImpl.handleLine(Unknown Source)
 at com.teamchat.client.sdk.events.EventStreamImpl.fetchEventStream(Unknown Source)
 at com.teamchat.client.sdk.events.EventStreamImpl.fetchOnceAndReturnInterruptedStatus(Unknown Source)
 at com.teamchat.client.sdk.events.EventStreamConnector.getEvents(Unknown Source)
 at com.teamchat.client.sdk.events.EventStreamConnector.mainloop(Unknown Source)
 at com.teamchat.client.sdk.events.EventStreamConnector.access$000(Unknown Source)
 at com.teamchat.client.sdk.events.EventStreamConnector$1.run(Unknown Source)
 at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
 at frontEnd.sendRequest.onReply(sendRequest.java:75)
 ... 16 more

I am currently working on task where I need to throw some message on reading null value from the database cell. But When I try to do so my code throws NullPointerException. I tried to handle it using try catch block but nothing helped me.

public String getCellData(String sql_query) throws Exception {
  System.out.println("Inside getCellData");
  String cell_data = "";
  try{
   JSONArray queried_data = (JSONArray)db_work.retrieveQueryRows(db_work.retrieveData(sql_query).toString());
   for (int i = 0; i < queried_data.size(); i++) {
    JSONArray queried_row=(JSONArray) queried_data.get(i);
    cell_data = queried_row.get(0).toString();
   }
     
  }
  catch(NullPointerException e)
  {
   cell_data="empty";
   return cell_data;
  }
  return cell_data;
 }
if(response.equals("Yes, Please let me in.")){
   String gender = fetch_details.getCellData("select * from Group_Join where Room='"+room_id+"'");
   System.out.println(gender);
   String goal = fetch_details.getCellData("select * from Group_Join where Room='"+room_id+"'");
   System.out.println(goal);
   api.performPostInCurrentRoom(new TextChatlet("Sure, thanks. We will add you to the support group."));
   if (goal.equals("empty")) {
    if (gender.equals("empty")) {
     System.out.println("Gender and Goal Both Empty");
     PrimaryChatlet gender_goal_chatlet=new PrimaryChatlet();
     gender_goal_chatlet.alias("GenderGoal");
     Form gender_goal_form=api.objects().form();
     gender_goal_form.addField(api.objects().select().name("Goal").label("Goal").addOption("Weight Loss").addOption("Weight Gain").addOption("Muscle Tone"));
     gender_goal_form.addField(api.objects().select().name("Gender").label("Gender").addOption("Male").addOption("Female"));
     gender_goal_chatlet.setReplyScreen(gender_goal_form);
     api.performPostInCurrentRoom(gender_goal_chatlet);
    }
Sagar Galande
  • 121
  • 2
  • 13

1 Answers1

0

It isn't recommended to catch a runtime exception (which your NullPointerException is).

Why don't you try to avoid it in the first place?

Something like:

if (queried_row.get(0).toString() != null)
  cell_data = queried_row.get(0).toString();
else
  cell_data = "empty";

or

cell_data = (queried_row.get(0).toString() != null) ? queried_row.get(0).toString() : "empty";
12dollar
  • 645
  • 3
  • 17