Home Developer Why use Try instead of Scala Try Catch

Why use Try instead of Scala Try Catch

Author

Date

Category

Scala try catch is always an option when writing Scala code for Java like exception control flows.
However, you also have the option of start using the Try type.

Scala try catch vs Try

Try was introduced in Scala 2.10 and behaves as a mappable Either without having to select right or left.

In the example below, taken from the Scala API:

def divide: Try[Int] = {  
  val dividend = Try(Console.readLine("Enter an Int that you'd like to divide:n").toInt)
  val divisor = Try(Console.readLine("Enter an Int that you'd like to divide by:n").toInt)
  val problem = dividend.flatMap(x => divisor.map(y => x/y))
  problem match {
    case Success(v) =>
      println("Result of " + dividend.get + "/"+ divisor.get +" is: " + v)
      Success(v)
    case Failure(e) =>
      println("You must've divided by zero or entered something that's not an Int. Try again!")
      println("Info from the exception: " + e.getMessage)
      divide
  }
}

You can see how, instead of using explicit try and catch to treat exceptions, Try is used to encapsulate the operation which is always an instance of either Success or Failure.

Benefits

You get, according again to the official documentation the:

[..] ability to pipeline, or chain, operations, catching exceptions along the way. You can map as you would a collection, an option or a right projection of an Either.

Furthermore, they encode exceptions in the Type system allowing for better documentation and clearer intention.
The Effective Scala[2] guide states:

using Option or com.twitter.util.Try are good, idiomatic choices, as they harness the type system to ensure that the user is properly considering error handling.

Start enforcing it today with Codacy

Login to your account and enable the pattern “Enforce usage of the Try object” to enforce it in your projects

1: Scala API http://www.scala-lang.org/api/current/index.html#scala.util.Try
2: Effective Scala http://twitter.github.io/effectivescala

Learn more about Scala

Check out other Scala resources on our blog.


Edit: We just published an ebook: “The Ultimate Guide to Code Review” based on a survey of 680+ developers. Enjoy!

About Codacy

Codacy is used by thousands of developers to analyze billions of lines of code every day!

Getting started is easy – and free! Just use your  GitHub, Bitbucket or Google account to sign up.

GET STARTED

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Subscribe to our newsletter

To be updated with all the latest news, offers and special announcements.

Recent posts

7 drawbacks of linting tools

Linting tools (also known as linters or static analyzers) help automate the code review process. They perform basic static code analysis by flagging programming...

Using the API to add Codacy Grade details to the Readme

Some context Codacy has a badge mechanism that can be included in your Readme file. It gives you an idea of the grade of your repository, from...

March Product Update: Support for Cloud Infrastructure-as-code, Custom Reports with API endpoints & more 🚀

Here are some fresh updates from March! This month we bring you a new product offering, new features, and product updates, interesting reads, and...

Top 10 ways to perform fast code review

We always want to be fast at code review.. How frequent is it for you to be reviewing code at 3am? When code reviewing, do you...

Interview with Gary McKay, Somos’ Director of Agile Service Delivery

Somos is a proven leader in registry management and data solutions. Somos fosters meaningful connections by delivering value, innovation and confidence to consumers. We...