One feature of Scala is it reuse Java's Exception class hierarchies, but much easier to use. For one thing, it treats Exception as "unchecked" just like RuntimeException, which I think one of the reason it causes Java to be unnecessary verbose. For example when opening a file stream, one way Java can do it is:

public void doFile(File file) throws FileNotFoundException, IOException {  
  FileInputStream fins = null;
try{
fins = new FileInputStream(file);
//process it.
}finally{
if(fins != null){ fins.close(); }
}
}

But in Scala equivalent can be done as follow:
def doFile(file: File): Unit = {  
  val fins = new FileInputStream(file)
try{
//process it.
}finally{
fins.close
}
}

In Scala, you don't need to predefine the "fins" to null then try it, and then check to close in finally block, because if FileInputStream failed, an FileNotFoundException instance will be thrown out of the method, before reaching to the try block. In addition, the Scala user of the doFile method do NOT need to invoke it inside a try/catch block, while Java requires it. This is possible because Exception, or any subclasses are "uncheck" as default in Scala. This mean that the exception will keep throw to next stack frame until it finds a "catcher". If none are found, it will exit main at the end.

Views: 29

Happy 10th year, JCertif!

Notes

Welcome to Codetown!

Codetown is a social network. It's got blogs, forums, groups, personal pages and more! You might think of Codetown as a funky camper van with lots of compartments for your stuff and a great multimedia system, too! Best of all, Codetown has room for all of your friends.

When you create a profile for yourself you get a personal page automatically. That's where you can be creative and do your own thing. People who want to get to know you will click on your name or picture and…
Continue

Created by Michael Levin Dec 18, 2008 at 6:56pm. Last updated by Michael Levin May 4, 2018.

Looking for Jobs or Staff?

Check out the Codetown Jobs group.

 

Enjoy the site? Support Codetown with your donation.



InfoQ Reading List

Presentation: Architecting Planet Scale, Modern Apps in the Cloud

George Mao shares a deep dive into evolving a basic web application to a planet-scale, global architecture. He walks through 5 stages of maturity, focusing on adding enterprise-grade security, achieving global high availability and disaster recovery, optimizing content delivery costs with CDNs, and implementing globally consistent persistence using serverless technologies.

By George Mao

Mini book: Architecture Through Different Lenses 2025

This eMag explores architecture through five distinct lenses: the socio-technical forces that invisibly shape our code, the paradox of infrastructure that succeeds by disappearing, the power of distributed intelligence over centralized control, the evolutionary advantage of iteration over revolution, and the pragmatic reality of designing for inevitable complexity.

By InfoQ

Podcast: Bridging the Open Source Gap: From Funding Paradoxes to Digital Sovereignty

Gabriele Columbro, managing director of the Linux Foundation Europe, discusses the differences in the open-source landscape between Europe, China and the US. Stressing that the open-source landscape is the last favorable ground for global innovation in the current geo-political landscape.

By Gabriele Columbro

BellSoft Unveils Hardened Java Images

BellSoft has launched Hardened Images for Java containers, claiming 95% fewer CVEs and 30% resource savings. Built on Alpaquita Linux, the 3-in-1 solution combines runtime optimisation, OS hardening, and CVE remediation. It offers a secure, flexible alternative to Chainguard and Distroless, available now in three tiers.

By Mark Silvester

Java News Roundup: JDK 26 in Rampdown, JDK 27 Expert Group, GlassFish, TornadoVM, Spring gRPC

This week's Java roundup for December 1st, 2025, features news highlighting: JDK 26 in Rampdown Phase One; the formation of the JDK 27 Expert Group; GA releases of TornadoVM 2.0 and Spring gRPC 1.0; a point release of GlassFish 7.1; the December 2025 edition of Open Liberty; the first beta release of JHipster 9.0 and the second release candidate of Hibernate Search 8.2.

By Michael Redlich

© 2025   Created by Michael Levin.   Powered by

Badges  |  Report an Issue  |  Terms of Service