Есть ли что-то, что предотвращает Ответ. Перенаправление для работы в блоке try-catch?

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

  • Действие
  • Ури

Для действия мы можем использовать Intent.ACTION_VIEW, а для Ури мы должны построить его, ниже я приложил пример кода для создания, сборки, начать деятельность.

 String addressString = "1600 Amphitheatre Parkway, CA";

    /*
    Build the uri 
     */
    Uri.Builder builder = new Uri.Builder();
    builder.scheme("geo")
            .path("0,0")
            .query(addressString);
    Uri addressUri = builder.build();
    /*
    Intent to open the map
     */
    Intent intent = new Intent(Intent.ACTION_VIEW, addressUri);

    /*
    verify if the devise can launch the map intent
     */
    if (intent.resolveActivity(getPackageManager()) != null) {
       /*
       launch the intent
        */
        startActivity(intent);
    }

9
задан Darshana 20 May 2013 в 12:21
поделиться

5 ответов

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

Изменить:

Эта статья базы знаний описывает это поведение (также для Request.End () и Server.Transfer () методы).

Для Response.Redirect () существует перегрузка:

Response.Redirect(String url, bool endResponse)

Если вы передадите endResponse = false , то исключение не будет (но среда выполнения продолжит обработку текущего запроса.)

Если endResponse = true (или если используется другая перегрузка), создается исключение, и текущий запрос будет немедленно завершен.

23
ответ дан 4 December 2019 в 08:01
поделиться

Как указывает Мартин, Response.Redirect вызывает исключение ThreadAbortException. Решение состоит в том, чтобы повторно выбросить исключение:

try  
{
   Response.Redirect(...);
}
catch(ThreadAbortException)
{
   throw; // EDIT: apparently this is not required :-)
}
catch(Exception e)
{
  // Catch other exceptions
}
4
ответ дан 4 December 2019 в 08:01
поделиться

Мартин прав, при использовании Response.Redirect возникает исключение ThreadAbortException, см. Статью kb здесь

3
ответ дан 4 December 2019 в 08:01
поделиться

Возможно, вы ссылались на переменную, которая объявлена ​​внутри блока try.

Например, приведенный ниже код недействителен:

try
{
  var b = bool.Parse("Yeah!");
}
catch (Exception ex)
{
  if (b)
  {
    Response.Redirect("somewhere else");
  }
}

Вы должны переместить объявление b за пределы блок try-catch.

var b = false;
try
{
  b = bool.Parse("Yeah!");
}
catch (Exception ex)
{
  if (b)
  {
    Response.Redirect("somewhere else");
  }
}
0
ответ дан 4 December 2019 в 08:01
поделиться

Я не думаю, что здесь есть какая-то известная проблема.

Вы просто не можете выполнить Redirect () внутри блока try / catch, потому что Redirect оставляет текущий элемент управления другому .aspx (например), что оставляет уловку в воздухе (не может вернуться к ней) .

РЕДАКТИРОВАТЬ: С другой стороны, я мог бы все это вычислить наоборот. Извините.

-3
ответ дан 4 December 2019 в 08:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: