Java: Как создать исключительную хэш-таблицу? - PullRequest
0 голосов
/ 10 февраля 2019

По предложению моего профессора я пытаюсь создать хеш-таблицу исключений для использования в моем классе исключений обслуживания.В настоящее время у меня проблема с созданием значений в моей Hashtable.

До сих пор я пытался не создавать переменные, но это привело к тому, что мое исключение не удалось разрешить.Я создал переменные, но они должны быть созданы, однако нулевые результаты приводят к 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

Отображение Hashtable должно было привести к:

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

, но фактический результат был:

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

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Поскольку вы просите о помощи в выполнении домашних заданий, я собираюсь дать расплывчатые, но (надеюсь) полезные советы и общие пояснения.

Переменная - это контейнер, который может что-то содержать.Когда вы используете переменную в выражении, вы просите вещь в корзине выполнить какую-то задачу для вас.

Когда корзина пуста, она ничего не содержит.Попытка использовать это ведро для работы бессмысленно, потому что вы действительно спрашиваете что-то в ведре - ничего .null означает, что в ведре ничего нет, и если вы попытаетесь что-то с ним сделать (кроме проверки на null), вы получите NullPointerException.

Вы также путаете имя ваших переменных с типом .Обозначение переменной «IOException» не означает, что на самом деле это IOException.Вы создали переменную с типом Exception с именем, которое может сбить с толку любого, кто смотрит на нее, о том, какой это тип переменной.Поскольку вы, похоже, хотите сослаться на класс IOException, попробуйте поискать здесь: класс Class , а также литералы класса .

0 голосов
/ 10 февраля 2019

Я изменил ваш код на следующий, и теперь он работает.Однако два из них не сработали, поэтому я прокомментировал.Вам нужно выяснить, что нужно сделать с ними

        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);

Выходные данные

Hashtable: {e6 = java.lang.NoSuchFieldException, e4 = java.lang.ClassNotFoundException, e2 = java.io.IOException, e1 = java.io.FileNotFoundException}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...