1

Предположим, что в вашей программе вы можете получить IndexOutOfBoundsException. я его обработки следующим образом:Как отобразить подробное сообщение об ошибке с помощью try {} catch() {} блоков

try{ 
//throws an IndexOutOfBoundsException during runtime 
}catch(IndexOutOfBoundsException ex){ 
System.err.println(ex); 
} 

Это будет отображать только java.lang.IndexOutOfBoundsException. Но я хотел бы показать подробное сообщение об ошибке (которое не завершит работу программы), как тот, который java дает нам (номер строки, имя_файла и т. Д.), Когда мы не обрабатываем ошибку и, таким образом, завершает работу программы.

+2

использование ex.printStackTrace() –

ответ

1

В Java вы можете использовать printStackTrace для любого объекта исключения, чтобы получить трассировку стека, напечатанную Java. В вашем случае минимальный:

try { 
    // Throw an IndexOutOfBoundsException 
} catch (IndexOutOfBoundsException ex) { 
    ex.printStackTrace(); 
} 

Это трассировку стека для System.err. Вы также можете передать ему поток печати или даже System.out для печати на этот конкретный поток.

Кроме того, если вы используете Java журнал, вы можете использовать:

logger.log(<LOG_LEVEL>, <LOG_MESSAGE>, ex); 

войти исключение. Для получения дополнительной информации см .: https://docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html

-1

Вы можете использовать

ex.GetMessage() 

Благодарности

+0

говорит «не может найти символ» Я предполагаю, что метод должен быть ex.getMessage(), но но я не получаю никаких подробностей об ошибке. На самом деле я вообще не получаю сообщение об ошибке:/ –

+0

Это не отвечает на вопрос пользователя. –

2

Используйте ex.printStackTrace() метод для печати исключение:

try { 
    int[] x = new int[1]; 
    x[2] = 5; 
} catch (IndexOutOfBoundsException ex) { 
    ex.printStackTrace(); 
} 
System.err.println("Program completed successfully"); 

Demo.

Если вы работаете в среде, где выход консоли не желательно, звоните ex.getStackTrace(), и отображать элементы таким образом, который согласуется с пользовательским интерфейсом вашей программы.

+0

это был очень полезный брат :), но это печатает слишком много информации. Я хотел бы, чтобы сообщение об ошибке было похоже на одно java-сообщение. java.lang.ArrayIndexOutOfBoundsException: 6 \t в sth.main (sth.java:15) \t на sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) \t в sun.reflect.NativeMethodAccessorImpl.invoke (Unknown Source) \t в sun.reflect.DelegatingMethodAccessorImpl.invoke (Unknown Source) \t в java.lang.reflect.Method.invoke (Unknown Source) \t в edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand (JavacCompiler.java:266) –

+0

Обнаружили, как отображать вышеупомянутые строки. : D –

0

Получил это от одного из моих учителей. Может быть полезно для других начинающих, таких как я. (Это не является частью любого Hw/уступки/др. Любопытство.)

public class ExceptionDemo{ 
public static void main(String[] args){ 
    int[] array = new int[2]; 
    try { 
     System.out.println(array[100]);//non-existent 
    } catch (IndexOutOfBoundsException ex){ 
     StackTraceElement[] e = ex.getStackTrace(); 
     System.err.println("Got error= " + ex + "\n"+ 
          "in file "+e[0].getFileName() +"\n"+ 
          "in class "+e[0].getClassName() +"\n"+ 
          "in method "+e[0].getMethodName() +"\n"+ 
          "in line "+e[0].getLineNumber()); 
     System.err.println("Full trace= "); 
     ex.printStackTrace(System.err); 
    } 
    System.out.println("As Salamu Alaikum"); 
    } 
} 
Смежные вопросы