2010-09-06 2 views
2

Я хотел бы различать ошибки, возникающие из-за того, что что-то перепутано в системе (например, файл отсутствует) по сравнению с ошибочным поведением от имени пользователя (например, выбирая слишком много элементов в графическом интерфейсе для некоторой команды).Какой «стандартный» тип исключения Java используется для ошибок пользователя?

Есть ли что-то вроде «UserMistakeException» (либо в JavaSE, либо в Eclipse API-интерфейсах), которые программисты склонны бросать в этих случаях? Я бы тогда представил подобные ошибки по-разному.

+0

IllegalArgumentException? –

+7

[PEBCAK] (http://www.urbandictionary.com/define.php?term=pebcak) Исключение :-p – irishbuzz

+0

hmm, не нашел PEBCAKException ни в JavaSE, ни в Eclipse API-интерфейсах: p – Aivar

ответ

3

В моем приложении есть специальное исключение (расширение RuntimeException), которое я создал для ситуаций, подобных этому. Когда этот вид исключения был брошен. клиент отобразит сообщение пользователю в диалоговом окне с ошибкой. Все остальные исключения приводят к отображению общего диалогового окна с кнопкой «Сведения», которая позволяет пользователю видеть стек и отправлять его мне. Я не думаю, что Java содержит какой-либо тип исключения, подходящий для этого, поэтому вам нужно создать свой собственный.

Однако я полностью согласен с другими ответами на то, что пользовательский интерфейс должен предотвращать так называемые «пользовательские ошибки». Предотвращение ошибок является одним из основных правил юзабилити. Если пользователь выбирает слишком много элементов, клиент должен проверить его, показать его значимым образом и не вызывать исключение. В моем приложении специальный тип исключения применяется только в тех случаях, когда пользовательский интерфейс не мог правильно проверить данные перед отправкой на сервер. Фактически получение пользовательского исключения сейчас очень редко.

4

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

+0

Я думаю, что это что ошибки пользователя следует рассматривать как нормальный поток программы. По крайней мере, легче сосредоточиться на основной программной логике, если вы можете временно игнорировать возможность ошибок пользователя. Тем не менее, я думаю, что ваша точка верна, и могут быть лучшие способы структурирования моей программы. – Aivar

+1

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

+1

хорошо, ошибки пользователей также довольно тяжелый материал - CPU может многообещающе исключение процесса быстрее, чем пользователь может производить их: D – Aivar

7

Нет, исключений не существует. И я не вижу исключительной ситуации, когда пользователь выбирает то, что можно выбрать.

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

Сообщите своим пользователям, что происходит с каждым случаем.

+0

Хорошая точка, я тоже рассматривал это решение. Плохая вещь с отключенными GUI-элементами заключается в том, что пользователю может быть непонятно, почему они отключены. – Aivar

+0

@Aivar То, как вы представляете свое сообщение, зависит от системы, о которой мы говорим. На веб-сайте вы можете использовать баннеры. Для довольно редких событий в настольных приложениях вы можете использовать MessageBoxes ... Просто напишите еще один вопрос на SO :-) – DerMike

2

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

В качестве человек, я не готов поймать Исключения, поэтому не бросайте их мне.

Смежные вопросы