[英]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(活动不响应),请遵循以下教程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.