>  기사  >  반환하는 대신 예외를 발생시킵니다. 메소드가 반환하는 실제 유형은 무엇입니까?

반환하는 대신 예외를 발생시킵니다. 메소드가 반환하는 실제 유형은 무엇입니까?

王林
王林앞으로
2024-02-22 13:58:141037검색

PHP 편집자 Zimo가 가져온 Java Q&A 기사는 "반환하는 대신 예외를 발생시킵니다. 메소드가 반환하는 실제 유형은 무엇입니까?"라는 일반적인 질문에 답합니다. Java에서 메소드가 예외를 발생시킬 때의 반환 유형은 무엇입니까? method 던져지는 예외 유형이 아니라 실제로는 무효입니다. 즉, 메서드는 값을 반환하지 않지만 예외가 발생할 때 값을 직접 던집니다. 예외를 처리할 때 try-catch 문을 사용하여 예외를 포착하고 이에 따라 처리하면 프로그램의 안정성과 신뢰성을 보장할 수 있습니다.

질문 내용

실제 반환 유형을 찾기 위해 Java의 URL 类的 openStream() 메소드를 더 깊이 파고들고 있습니다. OpenJDK의 소스는 다음과 같습니다.

공개 최종 InputStream openStream()이 java.io.IOException을 발생시킵니다. openConnection().getInputStream()을 반환합니다. }

반환 유형은 분명히 추상 클래스인 InputStream의 Object입니다. 그러면 이것이 선언된 유형입니다. 반환된 객체의 실제 유형은 무엇입니까? openConnection() 方法,该方法返回 URLConnection 类的对象。我还顺着它的源码找到了getInputSteam()의 귀환을 따릅니다. 마침내 다음 코드를 찾았습니다:

공개 입력 스트림 getInputStream()에서 IOException이 발생합니다. throw new UnknownServiceException("프로토콜이 입력을 지원하지 않습니다."); }

제 질문은 getInputStream() 的实际返回类型是什么,这将是 openStream()의 실제 반환 유형이 무엇인가요?

해결 방법

다음은 HTTPS 주소를 사용하는 예입니다.

프로세스 디버깅을 사용하고 URL#openStream메소드중단점을 배치하세요.
그리고 내 말은 귀하의 호출이 아니라 실제 방법을 의미합니다.

여기서 openConnection 메소드를 "들어가세요".
그런 다음 openConnection(URL) 메소드를 "들어가세요".

이렇게 하면 sun.net.www.protocol.https.Handler 클래스로 이동됩니다.

다시 sun.net.www.protocol.https.HttpsURLConnectionImpl의 새 인스턴스를 반환하는 openConnection(URL, Proxy) 메서드로 진행하세요.

더 멀리 이동하면 HttpsURLConnection 인스턴스가 sun.net.www.protocol.https.DelegateHttpsURLConnection 클래스를 통해 반환되는 것을 볼 수 있습니다.

알다시피, 몇 년 전에 Java를 사용하기 시작했을 때 java.awt.Graphics에 대해 혼란스러웠다는 점을 제외하고는 (거의) 정확히 이와 같은 문제가 발생했습니다.

인터페이스 프로그래밍

을 참조하세요.

실제로 정확한 클래스를 알 필요는 없습니다. 인터페이스를 구현하는 모든 항목을 교체하거나 교체할 수 있다는 것입니다. 이렇게 하면 시간이 지남에 따라 코드의 적응성이 높아집니다.

위 내용은 반환하는 대신 예외를 발생시킵니다. 메소드가 반환하는 실제 유형은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제