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: 28

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

Podcast: Building a Product-First Engineering Culture in the Age of AI

In this podcast, Shane Hastie, Lead Editor for Culture & Methods, spoke to Zach Lloyd about building a product-first engineering culture, and the critical importance of developers learning to effectively use AI tools while maintaining responsibility for code quality and understanding fundamental programming principles.

By Zach Lloyd

Presentation: Making Augmented Reality Accessible: A Case Study of Lens in Maps

Ohan Oda discusses making the Lens in Maps AR feature accessible to visually impaired users. He explains the motivations, ideation, and challenges faced, sharing valuable lessons on designing inclusive AR experiences and the impact on users, including his work on precision with AR.

By Ohan Oda

How to Build Secure Software without Sacrificing Productivity

Security can clash with development efficiency. Focusing on minimizing breach impact can be more effective than prevention. Dorota Parad argues for flexibility in compliance and collaborating with security teams to define practical protections. Limiting blast radius and using automation can boost security with minimal productivity loss.

By Ben Linders

Inaugural MCP Dev Summit Charts AI Integration's Future

Developers and contributors of the Model Context Protocol (MCP) converged in San Francisco in May 2025 for their first developer summit, charting the future of this rapidly adopted open standard to enable seamless integration between LLM applications and external data sources and tools. Discussions focused on a roadmap for MCP, including critical enterprise features.

By Hien Luu

Article: From Legacy to Value: Building Digital Banking Products Across Central and Eastern Europe

This article shares practical experiences and concrete examples from multi-site teams that built a single solution and delivered value to customers across various European markets. It provides real-life stories and lessons learned from developing two banking products, Lending and Foreign Exchange (FX), and their evolving architecture over time.

By Lejla Vulovic, Ana Nad

© 2025   Created by Michael Levin.   Powered by

Badges  |  Report an Issue  |  Terms of Service