Rumah > Java > teks badan

Buang pengecualian dan bukannya kembali. Apakah jenis sebenar yang dikembalikan oleh kaedah tersebut?

王林
Lepaskan: 2024-02-22 13:58:14
ke hadapan
1045 orang telah melayarinya

Artikel Soal Jawab Java yang dibawa oleh editor PHP Zimo akan menjawab soalan biasa: "Lemparkan pengecualian dan bukannya kembali. Apakah jenis sebenar yang dikembalikan oleh kaedah tersebut, apabila kaedah membuang pengecualian, jenis pulangan kaedah Ia sebenarnya tidak sah, bukan jenis pengecualian yang dilemparkan. Ini bermakna kaedah itu tidak mengembalikan sebarang nilai, tetapi melemparkannya terus apabila pengecualian ditemui. Apabila mengendalikan pengecualian, anda boleh menggunakan pernyataan cuba-tangkap untuk menangkap pengecualian dan mengendalikannya dengan sewajarnya untuk memastikan kestabilan dan kebolehpercayaan program.

Kandungan soalan

Saya sedang mendalami kaedah URL 类的 openStream() di Jawa untuk mencari jenis pulangan sebenar. Daripada OpenJDK, sumbernya ialah:

InputStream akhir awam openStream() membuang java.io.IOException { Kembalikan openConnection().getInputStream(); }

Jenis pulangan jelas adalah Objek InputStream, iaitu kelas abstrak. Jadi, ini adalah jenis yang diisytiharkan, apakah jenis sebenar objek yang dikembalikan? Saya mengikuti kepulangan openConnection() 方法,该方法返回 URLConnection 类的对象。我还顺着它的源码找到了getInputSteam(). Akhirnya, saya menjumpai kod ini:

Aliran input awam getInputStream() membuang IOException { buang UnknownServiceException baru("Protokol tidak menyokong input"); }

Soalan saya ialah apakah jenis pulangan sebenar getInputStream() 的实际返回类型是什么,这将是 openStream()?

Penyelesaian

Berikut ialah contoh menggunakan alamat HTTPS.

Gunakan nyahpepijat proses dan letakkan titik putus pada URL#openStream kaedah.
Dan, saya maksudkan kaedah sebenar, bukan panggilan anda.

Dari sini, "langkah ke" kaedah openConnection.
Kemudian, "langkah ke" kaedah openConnection(URL).

Ini akan membawa anda ke kelas sun.net.www.protocol.https.Handler.

Teruskan sekali lagi ke kaedah openConnection(URL, Proxy), yang mengembalikan tika baharu sun.net.www.protocol.https.HttpsURLConnectionImpl.

Mengembara lebih jauh, anda akan mendapati bahawa contoh HttpsURLConnection dikembalikan melalui kelas sun.net.www.protocol.https.DelegateHttpsURLConnection.

Anda tahu, apabila saya mula menggunakan Java beberapa tahun lalu, saya (hampir) mengalami masalah ini, kecuali saya keliru tentang java.awt.Graphics .

Lihat Memprogram ke antara muka

Ideanya ialah anda sebenarnya tidak perlu mengetahui kelas yang tepat - apa sahaja yang melaksanakan antara muka boleh ditukar masuk atau keluar. Ini menjadikan kod lebih mudah disesuaikan dari semasa ke semasa.

Atas ialah kandungan terperinci Buang pengecualian dan bukannya kembali. Apakah jenis sebenar yang dikembalikan oleh kaedah tersebut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!