在我教授的建议下,我试图创建一个要在我的服务异常类中使用的异常哈希表。我目前无法在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,...}
答案 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处浏览。