Да, он находится в scope , но, возможно, он не был инициализирован - если возникает исключение, тогда вместо переменной, которой присваивается значение, вы просто распечатываете исключение и продолжаете. Какое значение вы ожидаете получить newAIS
в этом случае?
Локальные переменные проверяются на определенное присваивание перед чтением, но экземпляры / статические переменные - нет.
Заметьте, что если вы не продолжали использовать факт исключения, а вместо этого бросили еще одно исключение до вызывающей стороны, или просто не перехватили его в первую очередь или не вернули, было бы хорошо. Непонятно, с какими исключениями вы действительно пытаетесь справиться - ловить Exception
- это вообще плохая практика.
Вы можете просто присвоить переменной значение, с которого нужно начать:
AudioInputStream newAIS = null;
... но разве вы действительно хотите продолжать работу, если назначение не выполнено?
Также обратите внимание, что вы в настоящее время сравниваете строки, используя ==
, что также является плохой идеей. Это:
if (outputFormat == "AIFF")
вероятно должно быть:
if (outputFormat.equals("AIFF"))