如何传递catch块语句的另一个Activity?

时间:2012-10-09 06:42:25

标签: android

如何将catch块值传递给另一个Activity?访问URL时我的Activity工作正常,当服务器忙或没响应时获取XML响应,如何将catch block语句传递给另一个Activity?

       public class AgAppHelperMethods
       {
         private static final String LOG_TAG = null;
         public static String varMobileNo;
         public static String varPinNo;
         String[][] xmlRespone = null;
         public static String[][] AgAppXMLParser( String parUrl)
         {
    String _node,_element;
            String[][] xmlRespone = null;
            HttpURLConnection urlConnection = null;
            try
               {        
                String url = parUrl;
                URL finalUrl = new URL(url);    
            urlConnection = (HttpURLConnection) finalUrl.openConnection();
                urlConnection.connect();
            DocumentBuilderFactory dbf =  
    DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new  
                    InputSource(urlConnection.getInputStream()));
        doc.getDocumentElement().normalize();
                NodeList list=doc.getElementsByTagName("*");
            _node=new String();
            _element = new String();
            xmlRespone = new String[list.getLength()][2];
            for (int i=0;i<list.getLength();i++)
                {
                    Node value=list.item(i).getChildNodes().item(0);
                    _node=list.item(i).getNodeName();
                    _element=value.getNodeValue();
                    xmlRespone[i][0] = _node;
                    xmlRespone[i][1] = _element;

                }//end for

            urlConnection.disconnect();

        }//end try

    catch (Exception e)
    {
        Log.e(LOG_TAG, "CONNECTION ERROR O SERVER NOT RESPONDING", e);
    } 
    return xmlRespone;         

}

3 个答案:

答案 0 :(得分:2)

正如你所说,你不想调用任何意图,你不会将这个例外传递给任何特定的类,所以不能使用Actitvity ......

那怎么样?

Public Class Messages{

static String message = "";

public static void setMessage(String msg){
        message= msg;

    }
public static String getMessage(){
   return message;

}



}

...............这里设置它

    catch(Exception e)

{
  Messages.setmessage("CONNECTION ERROR O SERVER NOT RESPONDING");
}

你可以在任何地方得到它,

String message = Messages.getMessage();

它返回最新更新的消息或空字符串..如果你想保留所有消息,那么你可以使用数组..它会适合你吗?

答案 1 :(得分:1)

如果你需要传递给其他一些Activity,你肯定应该使用Intent。

一个简单的解决方案是通过助手类的构造函数传递调用活动的上下文。从那里开始使用Context Object来启动一个新的Activity。

像这样,

catch(Exception e)

{
   Intent i=new Intent(contextObj,ActitvityName.class);
    contextObj.startActivity(i);

}

如果你需要传递Exception,请使用你的Intent的putExtra,

 i.putExtra("exception",e.getClass().getSimpleName());

在被调用的Activity中使用bundle对象获取值。

答案 2 :(得分:0)

如果你想在调用方法的其他类中接收Exception,那么你可以通过以下方式来完成。

  1. 删除您希望在另一个班级中收到的catch区块
  2. 通过在方法结尾处添加 throws Exception / IoException 从该方法中抛出异常
  3. 现在从方法的调用类中放入try和catch块并在那里处理异常。

    修改

  4. 如果要将异常传递给除调用方法类之外的任何其他类,可以为异常创建一个类,并使用getter和setter方法设置并从每个地方获取异常,只需要你需要将该类对象传递给接收异常类。