2015-08-03 9 views
5

Un uri potrebbero essere creati in due modi:URI.create() vs nuovo URI()

URI uri = new URI("https://www.google.com/"); 

Oppure,

URI uri = URI.create("https://www.google.com/"); 

mi chiedevo che è una pratica migliore. Non ho notato differenze di prestazioni e ho letto la documentazione, tuttavia era un po 'difficile da capire. Qualche idea su questo è apprezzata.

risposta

6

Leggere i documenti, differisce nell'utilizzo.

Crea un URI analizzando il dato fabbrica convenienza string.This metodo funziona come se invocando il {@link URI (String)} costruttore; qualsiasi {@link URISyntaxException} lanciata dal costruttore viene catturato e racchiuso in un nuovo {@link oggetto IllegalArgumentException}, che viene quindi lanciato.

Questo metodo viene fornito per l'uso in situazioni in cui è noto che la stringa è un URI legale, ad esempio per URI costanti dichiarati all'interno di un programma, e quindi sarebbe considerato un errore programmazione per la stringa non analizzare come tale. I costruttori , che lanciano {@link URISyntaxException} direttamente, dovrebbero essere usati in situazioni in cui un URI viene costruito dall'input dell'utente o da un'altra fonte che potrebbe essere soggetta a errori.

@param str La stringa da analizzare in un URI

* @return The new URI 
* 
* @throws NullPointerException 
*   If {@code str} is {@code null} 
* 
* @throws IllegalArgumentException 
*   If the given string violates RFC 2396 
*/ 
public static URI create(String str) { 
    try { 
     return new URI(str); 
    } catch (URISyntaxException x) { 
     throw new IllegalArgumentException(x.getMessage(), x); 
    } 
} 
+0

Oh bene, in modo che il punto principale è come si gestisce le eccezioni. Devo averlo perso nel doc. Grazie – UnknownOctopus

+0

Mi chiedo perché è meglio un IllegalArgumentException di URISyntaxException. Decisiva decisione di design. –

Problemi correlati