簡體   English   中英

調用引發異常的方法

[英]Call a method that throws exception

我正在編寫一個應用程序,以從原子供稿中提取和顯示內容。 該方法有效,但是當我嘗試在onNavigationItemSelected調用方法“ showFeed() ”時,出現錯誤“ Unhandled exception: java.lang.Exception ”。

package com.myapp;
import java.net.URL;
import java.util.Iterator;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedInput;
import com.sun.syndication.io.XmlReader;

// ... 

public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.navigation_home:
            showFeed();
    }
}

// ...

public void showFeed() throws Exception {

    URL url = new URL("http://feeds.feedburner.com/javatipsfeed");
    XmlReader xmlReader = null;

    try {

        xmlReader = new XmlReader(url);
        SyndFeed feeder = new SyndFeedInput().build(xmlReader);
        System.out.println("Title Value " + feeder.getAuthor());

        for (Iterator iterator = feeder.getEntries().iterator(); iterator.hasNext();) {
            SyndEntry syndEntry = (SyndEntry) iterator.next();
            System.out.println(syndEntry.getTitle());
        }
    } finally {
        if (xmlReader != null)
            xmlReader.close();
    }

}

我想在onNavigationItemSelected調用此方法。

您的showFeed方法引發Exception,

public void showFeed() throws Exception

必須使用try-catch塊將其捕獲,或者將其從onNavigationItemSelected的調用方方法中onNavigationItemSelected

所以要么抓住它,

 case R.id.navigation_home:
try{
            showFeed();
} catch (Exception e) {
e.printStackTrace();
}

或像下面一樣再次扔

public boolean onNavigationItemSelected(@NonNull MenuItem item) throws Exception

您正在UI線程上運行與網絡相關的線程,這可能會導致ANR(活動不響應),請遵循以下教程。

Android AsyncTask示例和說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM