Android: обработка исключений - PullRequest
0 голосов
/ 21 марта 2012

Моя Android-аппликация пытается подключиться к сервису, используя

 response = client.execute(getRequest);

Однако сервер может не работать, и в такие моменты я хотел бы выбросить пользовательский exception с пользовательским сообщением, а не сВ сообщении Android говорится, что приложение неожиданно закрылось.

Есть ли способ сделать это?

Ответы [ 6 ]

2 голосов
/ 21 марта 2012
try
{
   response = client.execute(getRequest);
}
catch(Exception ex)
{
  // Or add your custom exception here
  Log.e("Your Custom Message:",ex.toString());
}
0 голосов
/ 10 апреля 2012

Я решил эту проблему, используя ACRA

http://code.google.com/p/acra/wiki/BasicSetup

http://code.google.com/p/acra/wiki/AdvancedUsage

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

@ReportsCrashes(formKey="dGVacG0ydVHnaNHjRjVTUTEtb3FPWGc6MQ",
            mode = ReportingInteractionMode.TOAST,
            forceCloseDialogAfterToast = false, // optional, default false
            resToastText = R.string.crash_toast_text)
0 голосов
/ 21 марта 2012

Если вы также хотите показать это пользовательское сообщение пользователю, вы можете сделать это следующим образом:

try {
   response = client.execute(getRequest);
} catch(Exception e) {
   Toast.makeText(getApplicationContext(), "My custom message", Toast.LENGTH_LONG).show();
   throw new Exception("My custom message", e);
}
0 голосов
/ 21 марта 2012

Можете ли вы напечатать e.printstacktrace(); в блоке исключений?

Я думаю, что там вы получите подробную информацию о том, какой тип исключения вы получаете.

0 голосов
/ 21 марта 2012

Напишите свой собственный класс MyException extends Exception{... и дайте ему некоторую пользовательскую реализацию.Это может быть в конструкторе этого класса или в каком-либо методе.

И бросить это как -

try{
   response = client.execute(getRequest);
}catch(Exception e){
   //handle your exception
   throw new MyException();
}
0 голосов
/ 21 марта 2012

Вы можете попробовать обернуть вызов в блок try-catch, перехватить универсальный тип Exception, затем обработать его (посмотрите, не работает ли сервер), а затем сгенерировать свое собственное исключение.

try
{
   response = client.execute(getRequest);
}
catch(Exception e)
{
   //processing
   throw new MyCustomException();
}
...