Scala has a try
/catch
/finally
construct that helps you handle the exceptions that can occur in your code, such as when you attempt to access a website and its down, or when you try to read a file that doesn’t exist. The basic idea is that you try to access some resource, and if it fails, you catch the resulting exception and deal with it.
For example, when you attempt to read a file you can run into two possible exceptions:
FileNotFoundException
IOException
When you need to work with those exceptions, you’ll write code that looks like this:
// somewhere earlier in your code:
var content = ""
// then later in your code you try to read a file’s content
// into that variable:
try
content = readFile(filename)
catch
case e: FileNotFoundException =>
System.err.println("Couldn't find that file.")
case e: IOException =>
System.err.println("Had an IOException trying to read that file")
Notice that you write your normal “success path” code inside the try
block. You do whatever you want to do there, and then catch its potential exceptions in the catch
block. If everything works, your content
variable is updated with text from the file, but if it fails, you print those error statements.
If you’ve used Java, the concept is the same, but the case
syntax here is consistent with the case
syntax that’s used in match
expressions, which you’ll see later in this book. You can also use a finally
clause, which I’ll show next.
Discussion
Showing the finally
clause takes a little bit more work, and it will also help if we cover a few more topics before I address it. For those details, see the second try
/catch
/finally
lesson, which you’ll find just after the lessons on functions.
this post is sponsored by my books: | |||
#1 New Release |
FP Best Seller |
Learn Scala 3 |
Learn FP Fast |
Exercises
The exercises for this lesson are available here.