返される代わりに例外をスローします。メソッドによって返される実際の型は何ですか?

王林
リリース: 2024-02-22 13:58:14
転載
1045 人が閲覧しました

PHP エディター Zimo が提供する Java Q&A 記事は、「例外を返す代わりに例外をスローします。メソッドによって返される実際の型は何ですか?」という一般的な質問に答えます。Java では、メソッドが例外をスローするとき、メソッドの戻り値の型は実際には void であり、例外をスローする型ではありません。これは、メソッドが値を返さず、例外が発生したときに値を直接スローすることを意味します。例外を処理する場合、try-catch ステートメントを使用して例外をキャッチし、それに応じて処理することで、プログラムの安定性と信頼性を確保できます。

質問の内容

Java の URL クラスの openStream() メソッドをさらに詳しく調べて、実際の戻り値の型を調べています。 OpenJDK からのソースは次のとおりです:

public Final InputStream openStream() throws java.io.IOException { openConnection().getInputStream(); を返します。 }

戻り値の型は明らかに InputStream の Object であり、抽象クラスです。これは宣言された型ですが、返されるオブジェクトの実際の型は何でしょうか? URLConnection クラスのオブジェクトを返す openConnection() メソッドに従いました。また、そのソース コードをたどったところ、getInputSteam() が返されていることがわかりました。最後に、次のコードを見つけました:

パブリック入力ストリーム getInputStream() が IOException をスローする { throw new UnknownServiceException("プロトコルは入力をサポートしていません"); }

私の質問は、getInputStream() の実際の戻り値の型は何でしょうか。これは openStream() の実際の戻り値の型でしょうか?

回避策

これは、HTTPS アドレスを使用する例です。

を使用してプロセス をデバッグし、URL#openStream メソッド ブレークポイント を配置します。
そして、私が言っているのは実際の方法であり、あなたの呼び出しではありません。

ここから、 openConnection メソッドに「ステップイン」します。
次に、 openConnection(URL) メソッドに「ステップイン」します。

これにより、sun.net.www.protocol.https.Handler クラスに移動します。

再度 openConnection(URL, Proxy) メソッドに進み、sun.net.www.protocol.https.HttpsURLConnectionImpl の新しいインスタンスを返します。

さらに進むと、HttpsURLConnection のインスタンスが sun.net.www.protocol.https.DelegateHttpsURLConnection クラスを通じて返されることがわかります。

ご存知のとおり、私が数年前に Java を使い始めたとき、java.awt.Graphics について混乱していたことを除けば、まさにこれと同じ問題が (ほぼ) 発生していました。

参照インターフェイスへのプログラミング

アイデアは、実際には正確なクラスを知る必要はなく、インターフェイスを実装するものはすべて交換できる、または交換できるということです。これにより、時間の経過とともにコードの適応性が高まります。

以上が返される代わりに例外をスローします。メソッドによって返される実際の型は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!