Try catch in java android

Обработка исключений try-catch в Java

В предыдущем уроке мы обсуждали, что такое обработка исключений и почему мы это делаем. В этом уроке мы увидим блок try-catch, который используется для их обработки.

Блок try

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

За блоком try должны следовать блоки catch или блок finally или оба.

Синтаксис блока try

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

Блок catch

В нем вы обрабатываете исключения, этот блок должен следовать за блоком try. С одним блоком try может быть связано несколько блоков catch. Вы можете ловить разные исключения в разных блоках catch. Когда в try возникает исключение, выполняется соответствующий catch, который обрабатывает это конкретное исключение. Например, если арифметическое исключение возникает в try, тогда выполняются операторы, заключенные в catch для него.

Синтаксис try catch

try < //statements that may cause an exception >catch(exception(type) e(object))‏ < //error handling code >

Пример

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

Читайте также:  Ascii код строки python

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

class Example1 < public static void main(String args[]) < int num1, num2; try < /* We suspect that this block of statement can throw * exception so we handled it by placing these statements * inside try and handled the exception in catch block */ num1 = 0; num2 = 62 / num1; System.out.println(num2); System.out.println("Hey I'm at the end of try block"); >catch(ArithmeticException e) < /* This block will only execute if any Arithmetic exception * occurs in try block */ System.out.println("You should not divide a number by zero"); >catch(Exception e) < /* This is a generic Exception handler which means it can handle * all the exceptions. This will execute if the exception is not * handled by previous catch blocks. */ System.out.println("Exception occurred"); >System.out.println("I'm out of try-catch block in Java."); > >
You should not divide a number by zero I'm out of try-catch block in Java.

Несколько блоков catch

Пример, который мы видели выше, имеет несколько блоков catch, давайте рассмотрим несколько правил для этого случая с помощью примеров.

  1. Один блок try может иметь любое количество блоков catch.
  2. Общий блок catch может обрабатывать все исключения. Будь то ArrayIndexOutOfBoundsException или ArithmeticException или NullPointerException или любой другой тип исключения.

Зачем нам нужны другие обработчики catch, когда у нас есть универсальный, который может обрабатывать все. Это связано с тем, что в нем отображаете сообщение, но нет уверенности, для какого типа исключения оно сработать. Поэтому оно будет отображать одно и то же сообщение для всех исключений, и пользователь может не понять, какое именно возникло исключение. Вот причина, по которой вы должны поместить его в конец всех блоков исключений

  1. Если в блоке try не возникает исключение, блоки catch полностью игнорируются.
  2. Соответствующие блоки catch выполняются для конкретного типа исключения: catch(ArithmeticException e) является блоком catch, который может обрабатывать ArithmeticException catch(NullPointerException e) является блоком catch, который может обрабатывать NullPointerException
  3. Вы также можете выбросить исключение. Это рассмотрено в других уроках: пользовательское исключение, ключевое слово throws, throw vs throws.

Пример нескольких блоков catch

class Example2 < public static void main(String args[])< try< int a[]=new int[7]; a[4]=30/0; System.out.println("First print statement in try block"); >catch(ArithmeticException e) < System.out.println("Warning: ArithmeticException"); >catch(ArrayIndexOutOfBoundsException e) < System.out.println("Warning: ArrayIndexOutOfBoundsException"); >catch(Exception e) < System.out.println("Warning: Some Other exception"); >System.out.println("Out of try-catch block. "); > >
Warning: ArithmeticException Out of try-catch block.

В приведенном выше примере есть несколько блоков catch, и эти блоки выполняются последовательно, когда в блоке try возникает исключение. Это означает, что если вы поместите последний блок catch(catch(Exception e)) на первое место, сразу после блока try, то в случае любого исключения этот блок будет выполнен, поскольку он может обрабатывать все исключения. Этот блок должен быть размещен в последнюю очередь, чтобы избежать таких ситуаций.

Finally block

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

Источник

Try catch Java: Exception handling explained

try catch Java

Error handling, also called exception handling, is a big part of Java, but it’s also one of the more divisive elements. Exception handling allows a developer to anticipate problems that may arise in their code to prevent them from causing issues for users down the line. The reason this can become a nuisance is that some methods in Java will actually force the user to handle exceptions. This is where “try catch” in Java comes into play.

What is “try catch” Java?

For someone new to programming, it can be hard to understand why you might write code that makes it possible for an error to occur.

A good example would be the FileNotFoundException. This does exactly what it says on the tin: this exception is “thrown” when Java looks for a particular file and can’t find it.

So, what happens if someone is using your app, switches to their file browser, then deletes a save-file that the app was using? In that scenario, your application might understandably throw an exception. We say that this is an exception rather than an error because it’s a problem that we might reasonably anticipate and handle.

So you use a “try catch” block.

Try essentially asks Java to try and do something. If the operation is successful, then the program will continue running as normal. If it is unsuccessful, then you will have the option to reroute your code while also making a note of the exception. This happens in the “catch” block.

Try catch Java example

Here’s an example of using try catch in Java:

 try < int[] list = ; System.out.println(list[10]); > catch (Exception e)

Here, we create a list with 6 entries. The highest index is therefore 5 (seeing as “1” is at index 0). We then try to get the value from index 10.

Try running this and you will see the message “Oops!”.

Notice that we passed “Exception e” as an argument. That means we can also say:

We will get the message: “java.lang.ArrayIndexOutOfBoundsException: 10”

Now that we have “handled” our exception, we can refer to it as a “checked exception.”

Forced exception handling

Notice that we could have written this code without handling the exception. This would cause the program to crash, but that’s our prerogative!

In other cases, a method will force the user to handle an exception.

So, let’s say that we create a little method that will check the tenth position of any list we pass in as an argument:

public class MyClass < public static void main(String[ ] args) < int[] list = ; System.out.println(checkTen(list)); > public static int checkTen (int[] listToCheck) < int outPut = listToCheck[10]; return outPut; >>

This works just fine and will print “11” to the screen. But if we add the “throws” keyword to our method signature, we can force the user to deal with it.

public static int checkTen (int[] listToCheck) throws ArrayIndexOutOfBoundsException 

Now we can write our code like so:

public class MyClass < public static void main(String[ ] args) < int[] list = ; try < System.out.println(checkTen(list)); >catch (ArrayIndexOutOfBoundsException e) < //System.out.println(e); System.out.println("Oops!"); >> public static int checkTen (int[] listToCheck) throws ArrayIndexOutOfBoundsException < int output = listToCheck[10]; return output; >>

This will then force the user to deal with the exception. In fact, many Java editors will automatically populate the code with the necessary block. Note that we need to use the right type of exception!

So, should you force other devs to handle exceptions when writing your own classes? That’s really up to you. Keep in mind that some scenarios really should cause a program to terminate, and forcing a developer to deal with such instances will only create more boilerplate code. In other cases, this can be a useful way to communicate potential issues to other devs and promote more efficient code.

Of course, in the example given here, there are a number of other possibilities for exceptions. What happens if someone passes a list of strings into your method, for example? All I can say to that is, welcome to the wonderful world of Java!

This is your chance to decide what type of developer you want to be! Once you’re ready to find out, check out our guide to the best resources to learn Java!

Источник

Try catch in java android

правильно ли понимаю, что когда я работаю с проектом, в котором есть несколько потоков исполнения, может быть вот такая ситуация. Один из этих потоков запускается и завершается успешно, а затем выбрасывает исключение внутри блока try-catch. Оставшиеся потоки исполнения продолжают свою работу, но никакой код в блоке finally не выполняется. Тогда блок finally при обработке исключений не будет выполнен?

я читаю про исключения на 1м и в принципе понимаю, но не очень. ps: зачем только я начал с java core. pss: если вы это читаете, и я до сих пор на первом, то либо я прохожу другой курс, либо читаю книгу по джаве, параллельно проходя этот курс, либо решил взять перерыв на неопределенный срок времени. никогда не сдамся)

Есть подозрение, что так будет правильнее.

обращу внимание на некоторую неточность. цитата "Создание исключения При исполнении программы исключение генерируется JVM или вручную, с помощью оператора throw" в java исключения это тоже объекты поэтому создается исключение так же как объект new Exception. а бросается в программе с помощью оператора throw. обычно эти операции объединяют в одну throw new Exception("aaa");

если что я пишу это с 3 уровня. Под конец лекций я читал статью про бафридер, после нашел там ссылку на потоки вводов, а потом чтобы понять что там говориться ввел гугл про исключение и нашел эту статью, спасибо автору, это статья очень помогла. PS если ты читаешь этот комментарий и видишь что у меня нет прогресса(то есть если я все еще на 3 уровне или чуточку больше), то скажи мне, что я нуб и не дошел до 40 лвла

Источник

Оцените статью