2015-05-19 2 views
0

Как я могу узнать, произошло ли повреждение приложения в ответ на какой-либо пользовательский ввод или из-за некоторой внутренней ошибки?Как узнать причину неудачи?

И как я могу определить лучший способ обработки этих исключений с точки зрения пользователей?

+0

попробуйте использовать System.out.println ("put values ​​here"); Проверить значение на каждом шаге, где, по вашему мнению, может возникнуть ошибка, и проверить лог-кота для получения результатов, вы получите результаты –

+0

Лог-кошка - хороший способ определить ошибки, и после того, как вы нашли ошибку, попробуйте поймать, чтобы в следующий раз ваше приложение не собиралось авария. – Codelord

+0

@Codelord - это их все равно знать, что приложение сильно остановлено os ?? –

ответ

1

ли мы определенно говорить Java? Там почти все будет зависеть от ошибки от доступа к массиву за пределы до переполнения буфера.

Исключения, указанные здесь, относятся к классу unchecked exceptions, и они не обязательно должны быть пойманы, поскольку они являются результатом ошибки программиста (ошибка), а не ошибки ввода пользователем.

Так что это один из способов узнать, является ли это ошибкой ввода или нет. Если выбрано исключение - это исключение, исключающее ошибку, то ошибка указана в коде. У вас может быть разумный улов для непроверенных исключений в точке входа вашего программного обеспечения, чтобы просто попытаться определить, что произошло как последнее средство, возможно, сбросив трассировку стека, чтобы помочь пользователям сообщать об ошибках.

Если авария даже не выбрасывалась (например: segfault), то это происходило в нативном коде, а не в коде Java, и по-прежнему не является ошибкой пользователя (хотя это может быть ошибка сторонней библиотеки, но вместо того, чтобы использовать его, например, хотя ответственность за разработчика должна была сделать разработчик).

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

С точки зрения пользователя любое неперехваченное исключение является ошибкой программиста. Если программное обеспечение не изящно не восстанавливается из какого-либо исключения, основанного на вводе или нет, то технически ответственность лежит на разработчиках. Это не моя ошибка, если программное обеспечение выходит из строя, потому что я случайно набрал отрицательное число в поле, которое требует положительных чисел. Даже попытка загрузить поврежденный файл не обязательно должна приводить к сбою программного обеспечения, поэтому, возможно, ваш интервьюер искал ответ ответственного разработчика, который никогда не видит сбоя в качестве ошибки пользователя.

Когда мы говорим о сбоях, это не относится к области ввода пользователя и ошибки. Это всегда ошибка в коммерческом программном обеспечении производственного качества.

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

1

Попробуйте ввести код в блок try-catch. Это позволит вам обнаруживать исключения (ошибки), а затем записывать трассировку стека в консоль. Из трассировки стека в консоли вы сможете найти строку с ошибкой в ​​коде ....

try { 
    your code here 
} catch (Throwable t) { 
    t.printStackTrace(); 
}