Java: 如何创建异常哈希表?

Java: How to create an Exception Hashtable?

根据我教授的建议,我正在尝试创建一个异常哈希表以用于我的服务异常 class。我目前在我的哈希表中创建值时遇到问题。

到目前为止,我尝试过不创建变量,但这导致我的异常无法解决。我已经创建了变量,但它们需要被实例化,然而,null 导致 NullPointException 并且 = new Exception() 导致(示例)"e1=java.lang.Exception"

public class HashtableException {

  public static void main(String[] args) {

    Hashtable <String, Exception> exceptionHashtable = 
           new Hashtable <String, Exception>();

    Exception FileNotFoundException;
    Exception IOException;
    Exception ObjectStreamException;
    Exception ClassNotFoundException;
    Exception FileFormatException;
    Exception NoSuchFieldException;

    exceptionHashtable.put("e1", FileNotFoundException); 
    exceptionHashtable.put("e2", IOException); 
    exceptionHashtable.put("e3", ObjectStreamException); 
    exceptionHashtable.put("e4", ClassNotFoundException); 
    exceptionHashtable.put("e5", FileFormatException); 
    exceptionHashtable.put("e6", NoSuchFieldException); 


    System.out.println("The Hashtable is:" + exceptionHashtable);

  } // end main method
} // end class HashtableException

显示哈希表应该导致:

The Hashtable is:{e1=FileNotFoundException, e2=IOException,...} 

但实际输出是:

The Hashtable is:{e6=java.lang.Exception, e5=java.lang.Exception,...}

我将您的代码更改为以下内容,现在可以使用了。但是,其中两个没有用,所以我发表了评论。你需要弄清楚需要用它们做什么

        FileNotFoundException fileNotFoundException= new FileNotFoundException();
        IOException ioException = new IOException();
        //ObjectStreamException objectStreamException = null;
        ClassNotFoundException classNotFoundException= new ClassNotFoundException();
        //FileFormatException FileFormatException;
        NoSuchFieldException noSuchFieldException  = new NoSuchFieldException();

        exceptionHashtable.put("e1", fileNotFoundException); 
        exceptionHashtable.put("e2", ioException); 
        //exceptionHashtable.put("e3", objectStreamException); 
        exceptionHashtable.put("e4", classNotFoundException); 
        //exceptionHashtable.put("e5", FileFormatException); 
        exceptionHashtable.put("e6", noSuchFieldException); 


        System.out.println("The Hashtable is:" + exceptionHashtable);

输出为

哈希表是:{e6=java.lang.NoSuchFieldException, e4=java.lang.ClassNotFoundException, e2=java.io.IOException, e1=java.io.FileNotFoundException}

因为你是在寻求家庭作业方面的帮助,我将给出含糊但(希望)有用的提示和一般解释。

变量是一个可以装东西的桶。当您在表达式中使用变量时,您是在要求桶中的东西为您完成一些任务。

当桶是空的时,它什么也没有。试图用那个桶干活是没有意义的,因为你实际上是在问桶里的东西——什么都没有null 表示桶中不包含任何东西,如果你尝试用它做一些事情(除了检查 null)那么你会得到一个 NullPointerException.

您还混淆了变量的 nametype。将变量命名为 'IOException' 并不意味着它实际上是一个 IOException。您创建了一个类型为 Exception 的变量,其名称会使任何查看它的人都不知道它是什么类型的变量。由于您似乎想参考 class IOException,请尝试查看此处:the class Class and also at class literals.