Throw an exception instead of returning. What is the actual type returned by the method?
The java Q&A article brought by php editor Zimo will answer a common question: "Throw an exception instead of returning. What is the actual type returned by the method?" In Java, when a method throws an exception, the method's The return type is actually void, not the type that throws the exception. This means that the method does not return any value, but throws it directly when an exception is encountered. When handling exceptions, you can use the try-catch statement to catch exceptions and handle them accordingly to ensure the stability and reliability of the program.
Question content
I am digging deeper into the openStream()
method of the URL
class in Java to find its actual return type. From OpenJDK, its source is:
public final InputStream openStream() throws java.io.IOException { Return openConnection().getInputStream(); }
The return type is obviously InputStream
's Object, which is an abstract class. So, this is the declared type, what is the actual type of the returned object?
I followed the openConnection()
method which returns an object of URLConnection
class. I also followed its source code and found the return of getInputSteam()
. Finally, I found this code:
Public input stream getInputStream() throws IOException { throw new UnknownServiceException("The protocol does not support input"); }
My question is what is the actual return type of getInputStream()
and would this be the actual return type of openStream()
?
Workaround
This is an example using a HTTPS address.
Use to debug the process and place a breakpoint on the URL#openStream method .
And, I mean the actual method, not your call.
From here, "step into" the openConnection method.
Then, "step into" the openConnection(URL) method.
This will take you to the sun.net.www.protocol.https.Handler class.
Proceed again to the openConnection(URL, Proxy) method, which returns a new instance of sun.net.www.protocol.https.HttpsURLConnectionImpl.
Traversing further, you will find that an instance of HttpsURLConnection is returned through the sun.net.www.protocol.https.DelegateHttpsURLConnection class.
You know, when I started using Java a few years ago, I (almost) had this exact problem, except I was confused about java.awt.Graphics
.
SeeProgramming to an interface
The idea is that you don't actually need to know the precise class - anything that implements the interface can be swapped in or out. This makes the code more adaptable over time.
The above is the detailed content of Throw an exception instead of returning. What is the actual type returned by the method?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Since its inception in 2009, Bitcoin has become a leader in the cryptocurrency world and its price has experienced huge fluctuations. To provide a comprehensive historical overview, this article compiles Bitcoin price data from 2009 to 2025, covering major market events, changes in market sentiment, and important factors influencing price movements.

Bitcoin, as a cryptocurrency, has experienced significant market volatility since its inception. This article will provide an overview of the historical price of Bitcoin since its birth to help readers understand its price trends and key moments. By analyzing Bitcoin's historical price data, we can understand the market's assessment of its value, factors affecting its fluctuations, and provide a basis for future investment decisions.

Since its creation in 2009, Bitcoin’s price has experienced several major fluctuations, rising to $69,044.77 in November 2021 and falling to $3,191.22 in December 2018. As of December 2024, the latest price has exceeded $100,204.

Real-time Bitcoin USD Price Factors that affect Bitcoin price Indicators for predicting future Bitcoin prices Here are some key information about the price of Bitcoin in 2018-2024:

Important Node for Bitcoin Historical Price January 3, 2009: Genesis Block was generated, the first Bitcoin was generated, with a value of USD 0. October 5: The first Bitcoin transaction, a programmer bought two pizzas with 10,000 bitcoins, equivalent to $0.008. February 9, 2010: The Mt. Gox exchange went online and became the main platform for early Bitcoin trading. May 22: Bitcoin breaks through $1 for the first time. July 17: Bitcoin price plunged to $0.008, hitting an all-time low. February 9, 2011: Bitcoin price breaks through $10 for the first time. April 10: Mt. Go

The technical Q&A community in the ChatGPT era: SegmentFault’s response strategy StackOverflow...

How to achieve the 45-degree curve effect of segmenter? In the process of implementing the segmenter, how to make the right border turn into a 45-degree curve when clicking the left button, and the point...

Virtual currency funding rates are fees charged to traders holding positions in derivatives trading. It reflects a premium or discount between the spot market price and the futures contract price when the contract expires. When the spot price is higher than the futures price, the capital rate is negative, which means that traders who short positions pay fees to traders who long positions. On the contrary, when the spot price is lower than the futures price, the capital rate is positive, which means that traders who do long positions pay fees to traders who do short positions.