Kotlin try catch any exception

Исключения

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

Для того чтобы возбудить исключение явным образом, используйте оператор throw .

Чтобы перехватить исключение, используйте выражение try . catch .

try < // some code >catch (e: SomeException) < // handler >finally < // optional finally block >

В коде может быть любое количество блоков catch (такие блоки могут и вовсе отсутствовать). Блоки finally могут быть опущены. Однако, должен быть использован как минимум один блок catch или finally .

Try — это выражение

try является выражением, что означает, что оно может иметь возвращаемое значение.

val a: Int? = try < input.toInt() >catch (e: NumberFormatException)

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

Проверяемые исключения

В Kotlin нет проверяемых исключений. Для этого существует целый ряд причин, но мы рассмотрим простой пример, который иллюстрирует причину этого.

Читайте также:  Html image coding link

Приведённый ниже фрагмент кода является примером простого интерфейса в JDK, который реализован в классе StringBuilder .

Appendable append(CharSequence csq) throws IOException; 

Сигнатура говорит, что каждый раз, когда я присоединяю строку к чему-то (к StringBuilder , какому-нибудь логу, сообщению в консоль и т.п), мне необходимо отлавливать исключения типа IOExceptions . Почему? Потому, что данная операция может вызывать IO (Input-Output: Ввод-Вывод) ( Writer также реализует интерфейс Appendable ). Данный факт постоянно приводит к написанию подобного кода:

И это плохо. См. Effective Java, Item 77: Don’t ignore exceptions (не игнорируйте исключения).

Брюс Эккель как-то сказал о проверяемых исключения:

Examination of small programs leads to the conclusion that requiring exception specifications >could both enhance developer productivity and enhance code quality, but experience with large software projects suggests >a different result – decreased productivity and little or no increase in code quality. —>

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

Вот несколько других рассуждений по этому поводу:

Если вы хотите предупредить вызывающие объекты о возможных исключениях при вызове Kotlin кода из Java, Swift или Objective-C, вы можете использовать аннотацию @Throws . Узнайте больше об использовании этой аннотации для Java, а также для Swift и Objective-C.

Тип Nothing

throw в Kotlin является выражением, поэтому есть возможность использовать его, например, в качестве части Elvis-выражения:

val s = person.name ?: throw IllegalArgumentException("Name required") 

Типом выражения throw является специальный тип под названием Nothing . У этого типа нет никаких значений, он используется для того, чтобы обозначить те участки кода, которые могут быть не достигнуты никогда. В своём коде вы можете использовать Nothing для того, чтобы отметить функцию, чей результат никогда не будет возвращён.

fun fail(message: String): Nothing

При вызове такой функции компилятор будет в курсе, что исполнения кода далее не последует:

val s = person.name ?: fail("Name required") println(s) // известно, что переменная 's' проинициализирована к этому моменту 

Вы также можете столкнуться с этим типом при работе с выводом типов. Nullable-вариант этого типа Nothing? имеет ровно одно возможное значение — null . Если вы используете null для инициализации значения предполагаемого типа, и нет никакой другой информации, которую можно использовать для определения более конкретного типа, компилятор определит тип Nothing? .

val x = null // у 'x' тип `Nothing?` val l = listOf(null) // у 'l' тип `List

Совместимость с Java

См. раздел, посвящённый исключениям, Страница совместимости Java для получения информации о совместимости с Java.

Источник

What Is Kotlin Try Catch? The Detailed Guide to Grasp the Concepts of Kotlin Try Catch

What Is Kotlin Try Catch? The Detailed Guide to Grasp the Concepts of Kotlin Try Catch

Both try and catch blocks in Kotlin are used to handle the exceptions. Handling the exceptions is an important part of any software development. Exception handling enables our code to continue running even if an exception occurs. In this tutorial on Kotlin try-catch, we will be learning about all the topics related to try and catch blocks with the help of examples.

Here’s How to Land a Top Software Developer Job

Why Use Kotlin Try and Catch Expression?

In programming and development, there are times when a certain unexpected situation arises. To deal with these unexpected situations, we use try-catch expressions. An exception in Kotlin is an event that causes the program’s usual flow to be disrupted. It can be defined as an object that JVM throws at runtime whenever a circumstance like this develops.

The try-catch blocks help to deal with these unwanted exceptions that disturb the normal flow of execution.

So now, let us understand what a Try block in Kotlin is.

Try Block in Kotlin

Try block can be defined as a block of statements that may throw an exception when a specific type of exception occurs. The code which has a chance of raising an exception is put inside the try block. The try block is often followed by one or more than one catch blocks.

The syntax of try block is

Kotlin_Try_Catch_1.

Now let’s understand the Catch block.

Catch Block in Kotlin

Whenever there is an exception in the try block, the corresponding catch block handles that particular exception. The try block throws the code which raises the exception, and that particular code is caught using the catch block. The catch block is responsible for storing code that takes counter-measures to manage the exception.

Kotlin_Try_Catch_2

Let’s take a look at a try-catch block in action.

Kotlin_Try_Catch_3

In the example, we are trying to divide a number by 0. Here, this code generates an exception. To handle this code, we have put the code inside the try block. The catch block catches the exception and executes the instructions inside it.

The catch block is skipped if none of the statements in the try block throw an exception.

Now moving to try and catch block as an expression.

Try and Catch Block as an Expression

A set of values, variables, operators, and functions are referred to as an expression that work together to produce another value. As a result, the try-catch block can be used as an expression in Kotlin.

Furthermore, the try-catch expression’s return value is the last expression of either the try or catch blocks, or The try and catch block’s last statements are considered as return value. The value of the catch block is returned in the event of an exception.

Now let us understand the next topic of Kotlin try-catch.

Basics to Advanced — Learn It All!

Multiple Catch Blocks in Kotlin

In Kotlin, we can combine several catch blocks with the try block. This is especially important if we do numerous types of actions in the try block, which raises the chances of catching multiple exceptions.

Syntax:

// Code which may throw multiple exceptions

catch (exception: ExceptionType1)

catch (exception: ExceptionType2)

catch (exception: ExceptionType3)

Let’s take a look at a Multiple catch block in action.

Kotlin_Try_Catch_4

In this example, as we can see, there’s a variable num that is storing a value of 60/0. The exception that occurred here is an Arithmetic exception; however, the first two catch blocks didn’t handle the Arithmetic exception, that’s why the third catch block’s code executed.

Let’s move on to the next Kotlin try-catch topic.

Here’s How to Land a Top Software Developer Job

Nested Try-Catch Block In Kotlin

A nested try-catch block is one in which one try-catch block is used to implement another try-catch block. A nested try-catch block is required when a piece of code throws an exception, and another code statement within that block throws another exception.

Syntax:

Let’s take a look at a Nested try-catch example.

Kotlin_Try_Catch_5

In this example, there is an exception in the inner try block, but the occurred exception is ArithmeticException is not handled in the inner catch blocks, so the outer catch blocks are checked for this exception since the outer catch block is handling this exception, the code inside outer catch block is executed for ArithmeticException.

Master front-end and back-end technologies and advanced aspects in our Post Graduate Program in Full Stack Web Development. Unleash your career as an expert full stack developer. Get in touch with us NOW!

Conclusion

In this tutorial on Kotlin try-catch, you understood try block and catch block and learned why we use try and catch expressions in Kotlin. You also learned about multiple catch blocks in Kotlin and understood the Nested try-catch block in Kotlin with the help of examples.

If you are looking to build a software development career, you can check the Post-Graduate Program in Full Stack Development by Simplilearn. It can be the ideal solution to help you build your career in the right direction.

Do you have any questions about this Kotlin try-catch tutorial? If you do, then you can put them in the comments section. We’ll help you solve your queries at the earliest.

Find our Post Graduate Program in Full Stack Web Development Online Bootcamp in top cities:

Name Date Place
Post Graduate Program in Full Stack Web Development Cohort starts on 15th Aug 2023,
Weekend batch
Your City View Details
Post Graduate Program in Full Stack Web Development Cohort starts on 12th Sep 2023,
Weekend batch
Your City View Details
Post Graduate Program in Full Stack Web Development Cohort starts on 10th Oct 2023,
Weekend batch
Your City View Details

About the Author

Simplilearn

Simplilearn is one of the world’s leading providers of online training for Digital Marketing, Cloud Computing, Project Management, Data Science, IT, Software Development, and many other emerging technologies.

Post Graduate Program in Full Stack Web Development

Full Stack Web Developer — MEAN Stack

Full Stack Java Developer Job Guarantee Program

*Lifetime access to high-quality, self-paced e-learning content.

Источник

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