2

我每次都收到一个错误。我究竟做错了什么?

我的代码:

 public static void hashMap(String crnString)
{
    try
    {
        if (mMap.containsKey(crnString))
        {
            int count = mMap.get(crnString);
            count++;
            mMap.put(crnString, count);
        }
        else
        {
            mMap.put(crnString, 1);
        }
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    finally
    {
    }
}
4

2 回答 2

5

假设mMap是 a HashMap,块内的代码try永远不会抛出IOException。删除try-catch包装代码的块。

public static void hashMap(String crnString){
    if (mMap.containsKey(crnString)) {
        int count = mMap.get(crnString);
        count++;
        mMap.put(crnString, count);
    } else {
        mMap.put(crnString, 1);
    }
}
于 2013-10-11T02:07:05.067 回答
4

IOException 是检查异常。所以 try 块中的代码不是可能引发 IOExcption 的潜在代码,这就是编译器显示错误的原因。使用可以引发的特定异常类型捕获块或使用未经检查的异常捕获块。在您尝试块代码时,只能引发 NPE。

  try
{
    if (mMap.containsKey(crnString))
    {
        int count = mMap.get(crnString);
        count++;
        mMap.put(crnString, count);
    }
    else
    {
        mMap.put(crnString, 1);
    }
} catch (NullPointerException e)
{
    e.printStackTrace();
} catch(Exception e) {
   System.out.println("Unexcepted Exception");
    e.printStackTrace();
}
finally
{
}
于 2013-10-11T02:36:34.450 回答