мы можем назначить объект класса исключения для ссылки на объект класса объекта - PullRequest
0 голосов
/ 05 августа 2010

почему это не сработает, кто-нибудь может дать точный ответ на этот вопрос ...

public class Manager
{
     public static void main(String args[])
     {
         try{

                 Object obj=new A();   //it will generate ClassNotFoundException object
                 System.out.println("currently the reference obj is pointer to the object:"+obj);

            }catch(Object o)
                  {
                      System.out.println(o);
                  }

        }

     System.out.println("End of Main");
}       

Ответы [ 2 ]

7 голосов
/ 05 августа 2010

Это не сработает просто потому, что переменная, объявленная в операторе "catch", должна быть типом исключения (то есть Throwable или подтипом).

Из раздела 14.20 Спецификации языка Java:

В предложении catch должно быть ровно одно параметр (который называется параметр исключения); объявленный тип параметра исключения должен быть классом Throwable или подклассом (не просто подтип) Throwable, или происходит ошибка времени компиляции. в частности, это ошибка времени компиляции если объявлен тип исключения Параметр является переменной типа (§4.4). Область действия переменной параметра Блок улова оговорки.

Конечно, вы могли бы написать:

catch(Throwable t)
{
    Object o = t;
    System.out.println(o);
}

Не совсем понятно, почему вы хотите.

0 голосов
/ 05 августа 2010

Вы ничего не сказали о конструкторе класса A ... Это на самом деле вызывает исключение? Если да, то другие ответы должны помочь вам. Если нет, то, возможно, я мог бы вспомнить, что создание экземпляра исключения не является выбрасыванием исключения ...

Примеры:

Это не сработает:

try {
 new Exception();
} catch (Exception e) {
 System.out.println("This will never be printed...");
}

Однако вы можете получить желаемый результат, добавив ключевое слово throw:

try {
 throw new Exception();
} catch (Exception e) {
 System.out.println("This will actually be printed...");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...