Anda di halaman 1dari 16

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 1

Pertemuan 4 Exception Handling dan Java I/O


Exception adalah object yang berisi informasi yang didadpat dari luar eksekusi program secara normal. Exception dikembalikan kepada method yang memanggil melalui catch didalam exception. Informasi yang disimpan didalam object tersebut dapat diekstraksi untuk dapat memahami kesalahan apa yang terjadi, termasuk juga lokasi kesalahannya. Informasi penting lainnya yang yang akan disampaikan adalah type dari exception object misalnya ArithmaticException yang menjelaskan Overflow atau integer dibagi 0. Exception digunakan untuk menjelaskan adanya exceptioanl occurrence seperti errors.

4.1 Processing Exceptions


Kode program yang akan menyebabkan kesalahan akan ditangkap oleh exception handling. perhatikanlah contoh dibawah ini :
packagejavaapplicationexceptionhandling; importjava.io.BufferedReader; importjava.io.InputStreamReader; importjava.io.IOException; /** * *@authorjoko */ publicclassMain{

/** *@paramargsthecommandlinearguments */ publicstaticvoidmain(String[]args){ //TODOcodeapplicationlogichere

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 2

intn; BufferedReaderinput=newBufferedReader(new InputStreamReader(System.in)); StringinputString; System.out.print("MasukkanBilanganbulat:"); try { inputString=input.readLine(); n=Integer.parseInt(inputString); System.out.println("Seperempatdariintegeryangdimasukkanadalah: "+(n/0)); } catch(IOExceptione) { inputString=e.toString(); System.out.println(inputString+"PayahDehGue"); } catch(NumberFormatExceptione) { inputString=e.toString(); System.out.println(inputString+"KasianDehGue"); } }

Perhatikanlah bahwa kode program yang akan ditangkap kesalahannya terdapat didalam try block.

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 3

Selanjutnya terdapat catch block yang akan menangani exception yang akan muncul. Bagian program tersebut hanya akan dieksekusi jika terdapat kesalahan pada saat eksekusi dari kodekode program yang terdapat didalam try block. Dimana :
catch(IOExceptione) { inputString=e.toString(); System.out.println(inputString+"PayahDehGue"); }

digunakan untuk menangkap kesalahan pengetikan oleh readLine, sedangkan


catch(NumberFormatExceptione) { inputString=e.toString(); System.out.println(inputString+"KasianDehGue"); }

digunakan untuk menangkap kesalahan data : NumberFormatException. Misalkan yang dimasukkan adalah nilai 12w2 maka NumberFormatException akan tereksekusi. Setelah catch dieksekusi maka try/catch sequence sudah diterminasi.

4.1.3 Jenis Jenis Exceptions


Ada beberapa jenis exceptions. Nilai Exceptions akan diterbitkan pada saat terjadi kesalahan pada block try. Berikut ini diberikan Jenis exceptions :

Kelompok Standard Runtime Exception

Nama Exception ArithmeticException NumberFormatException IndexOutOfBoundsException NegativeArraySizeException NullPointerException SecurityException Overflow

Keterangan Koversi ilegal Index ilegal Array dengan panjang negative Referensi null Run-time security violation EOF sebelum input selesai File nggak ada

Standard Checked Exception

java.io.EOFException java.io.FileNotFoundException

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 4

java.io.IOException java.io.InteruptedException Errors OutOfMemory InternalError UnkownError

Keseluruhan I/O Exception diterbitkan oleh Thread.sleep method. Memory kurang Kesalahan internal Kesalahan tidak terdefinisi

Runtime exception adalah exception yang bisa saja tidak ditangani tanpa menyebabkan program berhenti kecuali jika propagasi exceptionnya sampai ke main, maka akan menyebabkan terminasi program secara abnormal. Checked Exception adalah exception yang ditangani secara explicit didalam throws. Programmer harus membuat catch untuk menangani exception yang terjadi. Sedangkan error adalah kesalahan yang tidak unrecoverable exception artinya tidak bisa ditangani oleh catch.

4.1.4 throw dan throws


Tujuan dari penggunaan throw adalah untuk menerbitkan exception yang diberikan kepada yang method yang memanggil. sedangkan throws digunakan untuk Checked Exceptions agar dapat dipropagasikan sampai ke main. Perhatikanlah kode program dibawah ini :
packagejavaapplicationdemothrow; importjava.io.IOException;

/** * *@authorjoko */ publicclassMain{

/** *@paramargsthecommandlinearguments */

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 5

publicstaticvoidmain(String[]args){ //TODOcodeapplicationlogichere for(StringfileName:args) { try { pf(fileName); } catch(IOExceptionerror) {System.err.println(error);} }}

publicstaticvoidpf(StringtoF)throwsIOException {} }

pada contoh program diatas public static void pf(String toF) throws IOException memberikan nilai exception ke methods yang memanggil perhatikanlah catch (IOException error) yang menangkap exception dari method pf.

4.2 Input dan output


Didala bahasa Java I/O diperoleh dengan penggunaan package java.io, termasuk didalamnya java.io.IOException. import directive memungkinkan pengunaan nama secara ringkas. sebagai contoh : import java.io.IOException. Dalam penggunaannya cukup menggunakan IOException. Untuk reference type yang lain seperti String dan Math tidak memerlukan import directive.

4.2.1 Basic stream operations


Stream yang dikenal dalam java adalah : 1. System.in,

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 6

2. System.out 3. System.err Sedangkan BufferedReader digunakan untuk input per baris. Selanjutnya jika ingin melakukan input dari console method yang dipakai adalah readLine. Tetapi sebelum menggunakan readLine buatlah terlebih dahulu sebuah BufferedReader object dari InputStreamReader object yang dibuat dari System.in

4.2.2 StringTokenizer
jika akan melakukan pembacaan terhadap sebuah bilangan integer dengan menggunakan readLine maka didalam setiap barisnya hanya ada satu nilai bilangan integer yang sah. kemudian diterjemahkan dengan method parseInt dari object Integer. Bagaimanakah jika setiap baris terdiri dari lebih 1 integer. Maka digunakan StringTokenizer yang memisahkan sebuah String menjadi tokens, caranya adalah dengan :
importjava.util.StringTokenizer; Perhatikanlahkodeprogramberikutini: importjava.io.InputStreamReader;

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.util.StringTokenizer;

publicclassMaxTest

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 7

publicstaticvoidmain(String[]args)

BufferedReaderin=newBufferedReader(new

InputStreamReader(System.in));

StringoneLine;

StringTokenizerstr;

intx;

inty;

System.out.println("Enter2intsononeline:");

try

oneLine=in.readLine();

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 8

if(oneLine==null)

return;

str=newStringTokenizer(oneLine);

if(str.countTokens()!=2)

System.out.println("Error:needtwoints");

return;

x=Integer.parseInt(str.nextToken());

y=Integer.parseInt(str.nextToken());

System.out.println("Max:"+Math.max(x,y));

catch(IOExceptione)

{System.err.println("UnexpectedIOerror");}

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 9

catch(NumberFormatExceptione)

{System.err.println("Error:needtwoints");}

Program diatas menunjukkan penggunaa input satu baris untuk memasukkan 2 buah integer. Secara default tokens dipisahkan oleh white space. StringTokenizer dapat dibuat agar dapat mengenali delimiter yang berbeda.

4.2.3 Sequential Files


Sebelumnya selalu dicontohkan input dengan console dengan menngunakan BufferedReader object yang dibuat dari InputStreamReader. Jika ingin beroperasi dengan file digunakan FileReader object. importjava.io.FileReader;

importjava.io.BufferedReader;

importjava.io.IOException;

publicclassListFiles

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 10

publicstaticvoidmain(String[]args)

if(args.length==0)

System.out.println("Nofilesspecified");

for(StringfileName:args)

listFile(fileName);

publicstaticvoidlistFile(StringfileName)

FileReadertheFile;

BufferedReaderfileIn=null;

StringoneLine;

System.out.println("FILE:"+fileName);

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 11

try

theFile=newFileReader(fileName);

fileIn=newBufferedReader(theFile);

while((oneLine=fileIn.readLine())!=null)

System.out.println(oneLine);

catch(IOExceptione)

{System.out.println(e);}

finally

//Closethestream

try

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 12

if(fileIn!=null)

fileIn.close();

catch(IOExceptione)

{}

Program diatas akan menampilkan isi dari text files yang namanya disebutkan sebagai command argument. Sedangkan formatted output sama dengan input. FileWriter, PrintWriter, dan println menggantikan FileReader, BufferedReader, dan readLine. Contoh dari program adalah sebagai berikut :

importjava.io.FileReader;

importjava.io.BufferedReader;

importjava.io.FileWriter;

importjava.io.PrintWriter;

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 13

importjava.io.IOException;

publicclassDoubleSpace

publicstaticvoidmain(String[]args)

for(StringfileName:args)

doubleSpace(fileName);

publicstaticvoiddoubleSpace(StringfileName)

PrintWriterfileOut=null;

BufferedReaderfileIn=null;

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 14

try

fileIn=newBufferedReader(newFileReader(fileName));

fileOut=newPrintWriter(newFileWriter(fileName+".ds"));

StringoneLine;

while((oneLine=fileIn.readLine())!=null)

fileOut.println(oneLine+"\n");

catch(IOExceptione)

{e.printStackTrace();}

finally

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 15

try

if(fileOut!=null)

fileOut.close();

if(fileIn!=null)

fileIn.close();

catch(IOExceptione)

{e.printStackTrace();}

Perhatikanlah bahwa ada FileWriter dan PrintWriter. FileWriter merupakan class yang digunakan untuk menulis character file. Sedangkan encoding yang digunakan tergantung kepada encoding dari system. PrintWriter mencetak representasi character dari output stream dengan encoding

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Pemrograman Aplikasi Jaringan Joko Adianto

Halaman 16

stardard sesuai dengan encoding dari system

Referensi :
1. Deitel, H; Deitel, M; Java How to Program, 3rd Ed, Prentice Hall, New York, 2002. 2. Netbeans.org; Using NetBeansTM IDE 5.5, http:\\www.netbeans.org. 3. Weiss, Mark Allen; "Data Structures and Problem Solving Using Java" Web sites : 1. http://www.aw-bc.com/cssuport 2. http://www.netbeans.org 3. http://java.sun.com

&&&&

Pusat Pengembangan Bahan Ajar - UMB

Ir. Joko Adianto M.Inf.Sys. PEMROGRAMAN APLIKASI JARINGAN

Anda mungkin juga menyukai