Discussions
Categories
- 197.1K All Categories
- 2.5K Data
- 546 Big Data Appliance
- 1.9K Data Science
- 450.8K Databases
- 221.9K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 552 MySQL Community Space
- 479 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.1K ORDS, SODA & JSON in the Database
- 555 SQLcl
- 4K SQL Developer Data Modeler
- 187.2K SQL & PL/SQL
- 21.4K SQL Developer
- 296.3K Development
- 17 Developer Projects
- 139 Programming Languages
- 293K Development Tools
- 110 DevOps
- 3.1K QA/Testing
- 646.1K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 158 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.2K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 19 Java Essentials
- 162 Java 8 Questions
- 86K Java Programming
- 81 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 205 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 468 LiveLabs
- 39 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 175 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 233 Portuguese
Checked Exceptions vs RuntimeException

Hello,
I just read the oracle documentation about Exceptions.
The Catch or Specify Requirement (The Java™ Tutorials > Essential Classes > Exceptions)
The definition for Error is clear, but the definition for the checked Exceptions and RuntimeException are confusing because therorically we can always recover from an Exception.
In doc from Unchecked Exceptions — The Controversy (The Java™ Tutorials > Essential Classes > Exceptions):
"Here's the bottom line guideline: If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception."
For example, NumberFormatException is RuntimeException but we often recover from this situation by asking the client to enter a valid number, isn't ?
So, how could we differentiate ?
Thank you
Answers
-
In the above mentioned quote from docs, client means the client programmer, who is using the oracle code in this case. and could be using an API developed by you or a third party. It does not mean the user of the program as you are assuming.
If you are making an API that can/would be used by client programmers, who may not have direct contact with you (common in opensource/ github projects), the client programmer would look only at the java docs to see what type of exceptions are being generated.
With checked exceptions the client have to handle exception
With Unchecked exception the client has an option to handle or leave handling of exception. NumberFormatException would be thrown by Java Runtime. It would propagate to the runtime level. The client programmer may choose to handle this unexpected situation or he may leave it to the Runtime environment.
Note that exceptions are not a means to control program flow. but a means to handle unexpected situations (alarm client programmer in this case) .