1
votes

Pourquoi le constructeur d'URL n'autorise pas l'URL relative?

Le constructeur d'URL n'autorise pas les protocoles manquants ou inconnus.

Mais cela ne prend pas en charge les URL relatives largement utilisées comme

  1. URL relative à la racine

Pourquoi les constructeurs d'URL lancent java.net.MalformedURLException: pas de protocole dans ces cas très courants?

Le constructeur d'URI prend en charge ces URL relatives.

Au fait, est-il correct de dire "URI relatif" au lieu de "URL relative"? Parce que 99% de tous les liens sur Internet sont des "URL relatives" et non des "URI relatifs"


2 commentaires

Consultez la documentation de java.net.URL et java.net.URI .


ouais, c'est bon de le voir. Connaissance :)


3 Réponses :


0
votes

Pourquoi les constructeurs d'URL lancent l'exception java.net.MalformedURLException: non protocole dans ces cas très courants?

Selon la documentation : < / p>

Renvoyé pour indiquer qu'une URL mal formée s'est produite. Soit pas légal protocole pourrait être trouvé dans une chaîne de spécification ou la chaîne pourrait ne pas être analysé.

Exemple 1: " https://stackoverflow.com/something/java/something "-> Cela lancera une erreur

Exemple 1.1: https://stackoverflow.com/something/java/something -> Cela ne lancera pas d'erreur.

<↑ Dans un sens simple, cela signifie-> Exemple 1: n'est pas analysé à l'intérieur de la chaîne. , donc supprimez "".

Les URI identifient et les URL localisent ; cependant, les localisateurs sont aussi des identifiants, donc chaque URL est également un URI, mais il y a des URI qui ne sont pas des URL.

Un diagramme de Venn exposé: (URI (URL))

au-dessus du diagramme de Venn Implique: l'URL est plus spécifique que l'URI.


0 commentaires

1
votes

Pourquoi les constructeurs URL lancent java.net.MalformedURLException : pas de protocole dans ces cas très courants?

Parce qu'il ne s'agit pas d'URL valides.

Le constructeur d'URI prend en charge ces URL relatives.

Incorrect. Il autorise les URI relatifs.

Au fait, est-il correct de dire "URI relatif" au lieu de "URL relative"? Parce que 99% de tous les liens sur Internet sont des "URL relatives" et non des "URI relatifs".

Non. Ce n'est pas correct 1 .

Les spécifications pour l'URI et l'URL indiquent clairement que "URL relative" n'est pas une terminologie valide. Voir https://tools.ietf.org/html/rfc3986

Les concepteurs des API Java pour URI et URL ont choisi (judicieusement IMO) d'utiliser correctement la terminologie; c'est-à-dire selon les spécifications respectives. C'est pourquoi le constructeur URL n'acceptera pas une chaîne URI relative comme argument.


1 - Il n'est pas plus correct que correct de désigner les fourmis comme des «bogues». Les vrais insectes sont les hémiptères qui sont un ordre d'Insecta (les insectes) qui se distingue par ses pièces buccales suceuses. Les fourmis sont membres de l'ordre des hyménoptères. Comme le dit Wikipedia: "De nombreux insectes communément appelés" bugs "appartiennent à d'autres ordres; par exemple, le lovebug est une mouche, tandis que le bogue de mai et la coccinelle sont des coléoptères." (voir Wikipédia ) Mon point? Si les concepteurs Java abusaient de la distinction URL / URI, ils seraient tout aussi mauvais qu'un biologiste qui qualifiait les fourmis de "bogues" dans un article scientifique.


0 commentaires

0
votes

Une URL est composée de différentes parties comme le protocole, l'hôte et la ressource présents sur cet hôte.

Un URI relatif ne contient pas toutes les informations pour créer une URL, il lance donc java.net.MalformedURLException.


0 commentaires