What are checked exceptions in java

Checked and unchecked exceptions in java with examples

There are two types of exceptions: checked exception and unchecked exception. In this guide, we will discuss them. The main difference between checked and unchecked exception is that the checked exceptions are checked at compile-time while unchecked exceptions are checked at runtime.

What are checked exceptions?

Checked exceptions are checked at compile-time. It means if a method is throwing a checked exception then it should handle the exception using try-catch block or it should declare the exception using throws keyword, otherwise the program will give a compilation error.

Lets understand this with the help of an example:

Checked Exception Example

In this example we are reading the file myfile.txt and displaying its content on the screen. In this program there are three places where a checked exception is thrown as mentioned in the comments below. FileInputStream which is used for specifying the file path and name, throws FileNotFoundException . The read() method which reads the file content throws IOException and the close() method which closes the file input stream also throws IOException .

import java.io.*; class Example < public static void main(String args[]) < FileInputStream fis = null; /*This constructor FileInputStream(File filename) * throws FileNotFoundException which is a checked * exception */ fis = new FileInputStream("B:/myfile.txt"); int k; /* Method read() of FileInputStream class also throws * a checked exception: IOException */ while(( k = fis.read() ) != -1) < System.out.print((char)k); >/*The method close() closes the file input stream * It throws IOException*/ fis.close(); > >
Exception in thread "main" java.lang.Error: Unresolved compilation problems: Unhandled exception type FileNotFoundException Unhandled exception type IOException Unhandled exception type IOException

Why this compilation error? As I mentioned in the beginning that checked exceptions gets checked during compile time. Since we didn’t handled/declared the exceptions, our program gave the compilation error.
How to resolve the error? There are two ways to avoid this error. We will see both the ways one by one.

Method 1: Declare the exception using throws keyword.
As we know that all three occurrences of checked exceptions are inside main() method so one way to avoid the compilation error is: Declare the exception in the method using throws keyword. You may be thinking that our code is throwing FileNotFoundException and IOException both then why we are declaring the IOException alone. The reason is that IOException is a parent class of FileNotFoundException so it by default covers that. If you want you can declare them like this public static void main(String args[]) throws IOException, FileNotFoundException .

import java.io.*; class Example < public static void main(String args[]) throws IOException < FileInputStream fis = null; fis = new FileInputStream("B:/myfile.txt"); int k; while(( k = fis.read() ) != -1) < System.out.print((char)k); >fis.close(); > >

Output:
File content is displayed on the screen.

Method 2: Handle them using try-catch blocks.
The approach we have used above is not good at all. It is not the best exception handling practice. You should give meaningful message for each exception type so that it would be easy for someone to understand the error. The code should be like this:

import java.io.*; class Example < public static void main(String args[]) < FileInputStream fis = null; try< fis = new FileInputStream("B:/myfile.txt"); >catch(FileNotFoundException fnfe) < System.out.println("The specified file is not " + "present at the given path"); >int k; try < while(( k = fis.read() ) != -1) < System.out.print((char)k); >fis.close(); >catch(IOException ioe) < System.out.println("I/O error occurred: "+ioe); >> >

This code will run fine and will display the file content.

Here are the few other Checked Exceptions –

  • SQLException
  • IOException
  • ClassNotFoundException
  • InvocationTargetException
Читайте также:  Парная линейная регрессия python

What are Unchecked exceptions?

Unchecked exceptions are not checked at compile time. It means if your program is throwing an unchecked exception and even if you didn’t handle/declare that exception, the program won’t give a compilation error. Most of the times these exception occurs due to the bad data provided by user during the user-program interaction. It is up to the programmer to judge the conditions in advance, that can cause such exceptions and handle them appropriately. All Unchecked exceptions are direct sub classes of RuntimeException class.

Lets understand this with an example:

Unchecked Exception Example

If you compile this code, it would compile successfully however when you will run it, it would throw ArithmeticException . That clearly shows that unchecked exceptions are not checked at compile-time, they occurs at runtime. Lets see another example.

class Example < public static void main(String args[]) < int arr[] =; /* My array has only 5 elements but we are trying to * display the value of 8th element. It should throw * ArrayIndexOutOfBoundsException */ System.out.println(arr[7]); > >

This code would also compile successfully since ArrayIndexOutOfBoundsException is also an unchecked exception.
Note: It doesn’t mean that compiler is not checking these exceptions so we shouldn’t handle them. In fact we should handle them more carefully. For e.g. In the above example there should be a exception message to user that they are trying to display a value which doesn’t exist in array so that user would be able to correct the issue.

class Example < public static void main(String args[]) < try< int arr[] =; System.out.println(arr[7]); > catch(ArrayIndexOutOfBoundsException e) < System.out.println("The specified index does not exist " + "in array. Please correct the error."); >> >
The specified index does not exist in array. Please correct the error.

Here are the few unchecked exception classes:

  • NullPointerException
  • ArrayIndexOutOfBoundsException
  • ArithmeticException
  • IllegalArgumentException
  • NumberFormatException

About the Author

I have 15 years of experience in the IT industry, working with renowned multinational corporations. Additionally, I have dedicated over a decade to teaching, allowing me to refine my skills in delivering information in a simple and easily understandable manner.

Comments

stil am not clear., y in the 1st example der is an error., and y in next 2 examples there is no error? can anybdy clear my doubt?

In the first example, we are not handling the exception thats why it will throw compilation error(public static void main(String args[]) whereas in other two examples exceptions are being handled properly(public static void main(String args[]) throws IOException).

Hardik, doesn’t make sense. If the file doesn’t ever exist, how will that display file content on the screen suddenly irrespective of handling?

Hardik makes sense. Java REQUIRES you to check checked exceptions. We are getting the error BECAUSE we didn’t check the checked exceptions.

Читайте также:  Java that is found on phones

Hi Shreyas, The error does not mean that the file is actually not present but the compiler reminds us that there may be a possibility that the file may be missing and we get an exception so it is better you handle this exception and in next two programs, if the file is available, we will get the content and if not then it will just print the exception details and will continue the execution of the program.

Using classes that opens a particular file lets you EXPLICITLY invoke throws those Exceptions or use try and catch block. Because when you compile(checked exception), Java checks to see if the file exists at the specified path. It doesn’t check at run-time(Unchecked exception).

hi, may i know the code explanation please while(( k = fis.read() ) != -1)
Waiting for your response.

Read is a method which is non static so we are calling it with an object fis . That method will return some value which will be stored in field or variable k, now the k value is compared with -1 with (!=) not equal to symbol . While k is not equal to -1 the loop will continue ! I hope u got it right..

read() belongs to FileInputStream class, which is used to read a file.
fis.read() will return int value i.e. the ASCII value of that integer.
As ASCII starts from 0 to 255 , hence we provide the first negative integer of the number system i.e -1 .
Hence it will read all the character of the file .

Can throws keyword be used to handle Unchecked exception? Or Unchecked Exception can be handled only with try-catch blocks.

Hi, you have mentioned that DataAccessException is a checked exception. However it is a runtime exception and that’s what makes it different from SQLException.

Fantastic Explanations and perfect examples used. I also want to ask is Can we handle the unchecked exceptions only via try-catch block? Is there any other way…

what will happen if we only add throws for checked exception and do not handle it ?will it still give compile error?

It handles it automatically on writing “throws IOException”. No error will come at compile time. Then, you may get Unchecked Exception at run time if there is any logical error

When We should handle the exception and when should We throws the exception ? Please try to give explanation in a simple way. Your help is much appreciated.
Thanks in advance 🙂

Источник

What are checked exceptions in java

  • Introduction to Java
  • The complete History of Java Programming Language
  • C++ vs Java vs Python
  • How to Download and Install Java for 64 bit machine?
  • Setting up the environment in Java
  • How to Download and Install Eclipse on Windows?
  • JDK in Java
  • How JVM Works – JVM Architecture?
  • Differences between JDK, JRE and JVM
  • Just In Time Compiler
  • Difference between JIT and JVM in Java
  • Difference between Byte Code and Machine Code
  • How is Java platform independent?
  • Decision Making in Java (if, if-else, switch, break, continue, jump)
  • Java if statement with Examples
  • Java if-else
  • Java if-else-if ladder with Examples
  • Loops in Java
  • For Loop in Java
  • Java while loop with Examples
  • Java do-while loop with Examples
  • For-each loop in Java
  • Continue Statement in Java
  • Break statement in Java
  • Usage of Break keyword in Java
  • return keyword in Java
  • Object Oriented Programming (OOPs) Concept in Java
  • Why Java is not a purely Object-Oriented Language?
  • Classes and Objects in Java
  • Naming Conventions in Java
  • Java Methods
  • Access Modifiers in Java
  • Java Constructors
  • Four Main Object Oriented Programming Concepts of Java
  • Inheritance in Java
  • Abstraction in Java
  • Encapsulation in Java
  • Polymorphism in Java
  • Interfaces in Java
  • ‘this’ reference in Java
Читайте также:  Html календарь для поля

Источник

What are checked exceptions in java

  • The basics of TOGAF certification and some ways to prepare TOGAF offers architects a chance to learn the principles behind implementing an enterprise-grade software architecture, including.
  • Haskell vs. PureScript: The difference is complexity Haskell and PureScript each provide their own unique development advantages, so how should developers choose between these two .
  • A quick intro to the MACH architecture strategy While not particularly prescriptive, alignment with a MACH architecture strategy can help software teams ensure application .
  • Postman API platform will use Akita to tame rogue endpoints Akita’s discovery and observability will feed undocumented APIs into Postman’s design and testing framework to bring them into .
  • How to make use of specification-based test techniques Specification-based techniques can play a role in efficient test coverage. Choosing the right techniques can ensure thorough .
  • GitHub Copilot Chat aims to replace Googling for devs GitHub’s public beta of Copilot Chat rolls out GPT-4 integration that embeds a chat assistant into Visual Studio, but concerns .
  • Navigate multi-cloud billing challenges Keeping track of cloud bills from multiple clouds or accounts can be complex. Learn how to identify multi-cloud billing .
  • 5 Google Cloud cost optimization best practices Cost is always a top priority for enterprises. For those considering Google Cloud, or current users, discover these optimization .
  • How to create and manage Amazon EBS snapshots via AWS CLI EBS snapshots are an essential part of any data backup and recovery strategy in EC2-based deployments. Become familiar with how .
  • BrightTALK @ Black Hat USA 2022 BrightTALK’s virtual experience at Black Hat 2022 included live-streamed conversations with experts and researchers about the .
  • The latest from Black Hat USA 2023 Use this guide to Black Hat USA 2023 to keep up on breaking news and trending topics and to read expert insights on one of the .
  • API keys: Weaknesses and security best practices API keys are not a replacement for API security. They only offer a first step in authentication — and they require additional .
  • AWS Control Tower aims to simplify multi-account management Many organizations struggle to manage their vast collection of AWS accounts, but Control Tower can help. The service automates .
  • Break down the Amazon EKS pricing model There are several important variables within the Amazon EKS pricing model. Dig into the numbers to ensure you deploy the service .
  • Compare EKS vs. self-managed Kubernetes on AWS AWS users face a choice when deploying Kubernetes: run it themselves on EC2 or let Amazon do the heavy lifting with EKS. See .

Источник

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