我一直试图弄清楚当用户输入无效的股票代码时,我的应用程序会一直停止。我的应用程序应该捕获异常并向应用程序用户显示一个Toast消息,并将EditText字段返回到""。
这是logcat流:
*
> 03-23 01:02:54.592 12645-13046/com.example.newtonmd.stockexchange
> I/StockStock.load()﹕ name = / 03-23 01:02:54.592
> 12645-13046/com.example.newtonmd.stockexchange W/dalvikvm﹕
> threadid=11: thread exiting with uncaught exception (group=0x4176dda0)
> 03-23 01:02:54.592 12645-13046/com.example.newtonmd.stockexchange
> E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
> Process: com.example.newtonmd.stockexchange, PID: 12645
> java.lang.RuntimeException: An error occured while executing doInBackground()
>
>
>
>
> > **at com.example.newtonmd.stockexchange.Stock.load(Stock.java:83)
> > at com.example.newtonmd.stockexchange.MainActivity$DownloadStockTask.doInBackground(MainActivity.java:65)
> > at com.example.newtonmd.stockexchange.MainActivity$DownloadStockTask.doInBackground(MainActivity.java:52)**
> >
> > *
*
这是我在mainactivity类的AsyncTask内部类中的代码。 stock.load行抛出一个异常以及类头。我似乎无法弄清楚原因。任何帮助是极大的赞赏。谢谢。
> private class DownloadStockTask extends AsyncTask<String, Void,
> Stock> {
>
> public boolean DBug = true;
>
> protected Stock doInBackground(String... symbols)
> {
>
> //download stock info from internet
>
> stock = new Stock(symbols[0]);
>
> try
> {
> stock.load();
> }
> catch( IOException e)
> {
> e.printStackTrace();
> DBug = false;
> Context context = getApplicationContext();
> CharSequence text = "Error in retrieving stock symbol.";
>
> Toast toast = Toast.makeText(context ,text , Toast.LENGTH_SHORT);
> toast.show();
> return stock = new Stock("");
> }
>
> return stock;
> }
>
> protected void onPostExecute(Stock stock)
> {
> if(!DBug) {
> Context context = getApplicationContext();
> CharSequence text = "Error in retrieving stock symbol.";
>
> Toast toast = Toast.makeText(context ,text , Toast.LENGTH_SHORT);
> toast.show();
> }
> else{
>
> TextView sym = (TextView) findViewById(R.id.symbolResult);
>
> TextView name = (TextView) findViewById(R.id.nameResult);
>
> TextView price = (TextView) findViewById(R.id.priceResult);
>
> TextView time = (TextView) findViewById(R.id.timeResult);
>
> TextView change = (TextView) findViewById(R.id.changeResult);
> TextView range = (TextView) findViewById(R.id.rangeResult);
>
>
> sym.setText(stock.getSymbol());
> name.setText(stock.getName());
> price.setText(stock.getLastTradePrice());
> time.setText(stock.getLastTradeTime());
> change.setText(stock.getChange());
> range.setText(stock.getRange());
> }
> }
>
>
>
>
> }