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

时间:2019-02-10 06:45:40

标签: java exception hashtable

在我教授的建议下,我试图创建一个要在我的服务异常类中使用的异常哈希表。我目前无法在Hashtable中创建值。

到目前为止,我尝试不创建变量,但是这导致无法解决我的异常。我已经创建了变量,但是需要实例化它们,但是,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,...}

2 个答案:

答案 0 :(得分:1)

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

        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}

答案 1 :(得分:0)

由于您要寻求作业方面的帮助,因此我将给出含糊但(希望如此)有用的提示和一般性解释。

变量是可以容纳某些东西的存储桶。在表达式中使用变量时,您是在要求存储桶中的东西为您完成一些任务。

当存储桶为空时,它不包含任何东西。尝试使用该存储桶进行工作是没有意义的,因为您实际上是在问存储桶中的东西-什么都没有null表示该存储桶不包含任何内容,并且如果您尝试使用该存储桶执行某些操作(除了检查null之外),那么您会得到一个NullPointerException

您还将变量的名称类型混淆。给变量“ IOException”命名并不意味着它实际上是一个IOException。您已经创建了一个类型为Exception的变量,该变量的名称会使任何查看它的人都对变量的类型感到困惑。由于您似乎想引用类IOException,因此请尝试在此处浏览:the class Class,也可以在class literals处浏览。