Компилятор мешает вам сделать что-то, что, скорее всего, является ошибкой, поскольку после блока try-catch вы, вероятно, предполагаете, что переменная инициализирована. Однако, если выдается исключение, оно не будет инициализировано.
Вам нужно будет присвоить переменную чему-либо перед ее использованием. Однако можно просто присвоить ему значение NULL, если вы хотите, чтобы оно было NULL в случае сбоя назначения.
Итак, если вы хотите, чтобы переменная была нулевой, если присваивание не выполнено, попробуйте это:
String unknown = null;
try{
unknown="cannot see me, why?";
}catch(Exception e){
e.printStackTrace();
}
System.out.println(unknown);
Если вы хотите установить переменную на что-то другое, если возникнет исключение, попробуйте это:
String unknown;
try{
unknown="cannot see me, why?";
}catch(Exception e){
e.printStackTrace();
unknown = "exception caught";
}
System.out.println(unknown);
Кроме того, если не имеет смысла продолжать выполнение вашего метода в случае неудачного присвоения, вы можете рассмотреть возможность либо возврата из блока catch, либо выдачи другого исключения, которое будет перехвачено вызывающей стороной. Например:
String unknown;
try{
unknown="cannot see me, why?";
}catch(Exception e){
e.printStackTrace();
//return; // if you just want to give up with this method, but not bother breaking the flow of the caller
throw new Exception("Uh-oh...", e); // if you want to be sure the caller knows something went wrong
}
System.out.println(unknown);