2020-11-03 10:11
오늘 원인과 해결방법을 찾아볼 자바 Exception은 java.net.MalformedURLException 다. 사실 워딩 그대로 잘못된 URL이 원인이고 URL을 맞게 고쳐주면 해결이 되는 아주 간단한 문제지만 좀 더 세부적으로 탐구해보기로 했다.

에러를 발생시키는 조건은 각종 프로토콜을 다루는 클래스에서 잘못된 인자로 정상적인 프로토콜을 인식할 수 없을 때 예외가 발생하도록 처리 되어있다.
대표적이고 많이 발생하는 클래스는 URL 이다.
package exception;
import java.net.URL;
public class test_MalformedURLException {
public static void main(String[] args) throws Throwable {
URL url = new URL("file");
}
}
Exception in thread "main" java.net.MalformedURLException: no protocol: file
at java.base/java.net.URL.<init>(URL.java:672)
at java.base/java.net.URL.<init>(URL.java:568)
at java.base/java.net.URL.<init>(URL.java:515)
at exception.test_MalformedURLException.main(test_MalformedURLException.java:7)정상적으로 동작 시키려면 file에 ’:’ 콜론만 붙여주면 된다.
즉, 프로토콜을 인식하는 문자열들은 자바에서 지원하는 프로토콜 명칭에 ’:’ 콜론이 붙으면 되는 식이다.
file:
http:
https:
이렇게 세가지 유형의 프로토콜이 아니라 다른 값이 온다면 해당 예외(exception)을 발생하는 것을 확인했다.
‘java.net.MalformedURLException’이 발생했다면 url에 해당하는 값을 찍어서 디버깅 해보자. 예외 메세지로도 왠만하면 확인할 수 있으니 로그를 살펴봐도 되고…