Bagaimana cara menghasilkan Pengecualian Timeout Sederhana di Jawa?
Diterbitkan: 2018-02-26Di Jawa bagaimana cara menghasilkan TimeoutException sederhana?
Dalam tutorial ini kita akan menghasilkan kesalahan Timeout saat memanggil Google.com
dengan penundaan sederhana 10 milidetik. CrunchifyGenerateTimeout adalah panggilan publik di mana kita memanggil google.com menggunakan connection.connect()
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
package crunchify . com . tutorial ; import java . io . BufferedReader ; import java . io . IOException ; import java . io . InputStreamReader ; import java . net . HttpURLConnection ; import java . net . URL ; /** * @author Crunchify.com * Program: How to Generate Simple TimeoutException for a specific IP in Java * Version: 1.0.1 * */ public class CrunchifyGenerateTimeout { public static void main ( String [ ] args ) throws Exception { new CrunchifyGenerateTimeout ( ) ; } public CrunchifyGenerateTimeout ( ) { try { String myUrl = "https://google.com/" ; // myUrl = URLEncoder.encode(myUrl, "UTF-8"); String results = crunchifyCallURL ( myUrl ) ; System . out . println ( results ) ; } catch ( Exception e ) { e . printStackTrace ( ) ; } } /** * Just return a result of URL call. * * @param crunchifyURL * @return * @throws Exception */ private String crunchifyCallURL ( String crunchifyURL ) throws Exception { URL crunchURL = null ; BufferedReader crunchReader = null ; StringBuilder crunchBuilder ; try { // create the HttpURLConnection crunchURL = new URL ( crunchifyURL ) ; HttpURLConnection connection = ( HttpURLConnection ) crunchURL . openConnection ( ) ; // Let's make GET call connection . setRequestMethod ( "GET" ) ; // Current Timeout 10 milliseconds - to generate Timeout Error connection . setReadTimeout ( 10 ) ; connection . connect ( ) ; // Simply read result and print line crunchReader = new BufferedReader ( new InputStreamReader ( connection . getInputStream ( ) ) ) ; crunchBuilder = new StringBuilder ( ) ; String eachLine = null ; while ( ( eachLine = crunchReader . readLine ( ) ) ! = null ) { crunchBuilder . append ( eachLine + "\n" ) ; } return crunchBuilder . toString ( ) ; } catch ( Exception et ) { et . printStackTrace ( ) ; throw et ; } finally { if ( crunchReader ! = null ) { try { crunchReader . close ( ) ; } catch ( IOException ioException ) { ioException . printStackTrace ( ) ; } } } } } |
Jalankan saja program di atas sebagai aplikasi Java dan Anda akan dapat menghasilkan TimeoutException di konsol Eclipse.
Jika Anda meningkatkan ReadTimeout menjadi 1000 milidetik maka Anda tidak akan dapat membuat ulang pengecualian.
// connection .setReadTimeout(1000);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
java.net.SocketTimeoutException: Read timed out at java.base/java.net.SocketInputStream.socketRead0(Native Method) at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:171) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:141) at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:425) at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:154) at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1031) at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1402) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1429) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:163) at crunchify.com.tutorial.CrunchifyGenerateTimeout.doHttpUrlConnectionAction(CrunchifyGenerateTimeout.java:60) at crunchify.com.tutorial.CrunchifyGenerateTimeout.<init>(CrunchifyGenerateTimeout.java:29) at crunchify.com.tutorial.CrunchifyGenerateTimeout.main(CrunchifyGenerateTimeout.java:20) java.net.SocketTimeoutException: Read timed out at java.base/java.net.SocketInputStream.socketRead0(Native Method) at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:171) at java.base/java.net.SocketInputStream.read(SocketInputStream.java:141) at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:425) at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:154) at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1031) at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973) at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1402) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1429) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:163) at crunchify.com.tutorial.CrunchifyGenerateTimeout.doHttpUrlConnectionAction(CrunchifyGenerateTimeout.java:60) at crunchify.com.tutorial.CrunchifyGenerateTimeout.<init>(CrunchifyGenerateTimeout.java:29) at crunchify.com.tutorial.CrunchifyGenerateTimeout.main(CrunchifyGenerateTimeout.java:20) |
