2

我遇到了一个问题,即我的 Yahoo Finance API 无法在我的代码中运行。我正在创建一个实时货币转换器。我检查了谷歌,但似乎没有任何问题可以回答我的问题。当我在我的应用程序中按下“计算”按钮时,什么也没有发生。这是我输入的代码。

        public interface CurrencyConverter {
    public double convert(String currencyFrom, String currencyTo) throws Exception;
}

public class YahooCurrencyConverter implements CurrencyConverter{
     public double convert(String currencyFrom, String currencyTo) throws IOException {
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet("http://quote.yahoo.com/d/quotes.csv?s=" + currencyFrom + currencyTo + "=X&f=l1&e=.csv");
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            String responseBody = httpclient.execute(httpGet, responseHandler);
            httpclient.getConnectionManager().shutdown();
            return Double.parseDouble(responseBody);
}


}
     public void convertDollarstoEuros(){
    double current;
    double val = Double.parseDouble(edittextdollars.getText().toString());
    DecimalFormat df = new DecimalFormat(".##");
     YahooCurrencyConverter ycc = new YahooCurrencyConverter();

        try {
            current = ycc.convert("USD", "EUR");
            edittexteuros.setText(df.format(val*current)); 
            }
        catch (Exception e) {
            e.printStackTrace();
        }

    }

我的清单文件中有 Internet 权限,并且我已经在我的 Android SDK 中安装了 Google API。我的代码似乎有问题,但我无法识别它。这是我删除 try/catch 方法时出现的情况: http://oi40.tinypic.com/2sah6d5.jpg

任何帮助将不胜感激。

4

1 回答 1

0

很可能“什么都没有发生”,因为您正在捕获所有异常。我建议您删除该try...catch块,或者至少捕获您需要处理的特定异常,并让 Java 异常系统为您完成其余的工作。我强烈建议您了解更多有关 Java 异常处理系统的信息。Oracle 异常教程是一个很好的起点。前两节课将为您提供您在 Android 编程中遇到的 99% 所需要了解的基础知识。

此外,您应该检查 logcat 以查看是否抛出任何异常

编辑:关于异常的一点点

请注意,弹出消息中的某些文本是蓝色的。这意味着您可以单击它,Eclipse 将为您生成一些代码。我建议您单击“Surround with try/catch”并注意生成的代码与您在此处发布的代码有何不同。当您了解如何以及何时使用 try/catch 语句时,这是一个很好的工具。

在这种特殊情况下,我认为“添加抛出声明”是一个更好的选择。点击它,看看会发生什么。您很可能会在代码的其他地方遇到类似的错误。您应该继续向每个不知道如何处理异常的方法添加 throws 声明。您应该只将 try/catch 语句添加到知道发生错误时该怎么做的方法中。这通常在 UI 代码中,例如 Listener 方法。

于 2013-06-21T01:30:37.090 回答