MODUL II Dasar-Dasar Pemrograman Bahasa Java
1
MODUL II DASAR-DASAR PEMROGRAMAN BAHASA JAVA Tujuan a. Mengenal dan dapat menggunakan variabel, tipe data, operator, ekspresi, statement, blok dan statemen-statemen pengulangan, pembuat keputusan (kondisional), exception handling dan pencabangan. b. Menulis program aplikasi sederhana menggunakan point-point di (a) c. Menulis program applet sederhana menggunakan point-point di (a) Waktu 15 menit untuk mendengarkan materi dari instruktur 45 menit untuk mencoba latihan 30 menit untuk mengerjakan kuis 15 menit untuk membahas kuis Materi II.1. Variabel Variabel digunakan untuk menyimpan data dalam sebuah program. i. Bentuk umum mendeklarasi variabel : type name ii. Tipe data Setiap variabel harus mempunyai tipe data yang digunakan untuk menentukan nilai variabel yang diisikan dan operasi-operasi apa yang bisa diberlakukan pada variabel tersebut. Bahasa pemrograman java mempunyai dua tipe data yaitu tipe primitive dan tipe reference.Dalam bahasa pemrograman lainnya, bentuk dan ukuran tipe data bisa tergantung pada platform mana program tersebut berjalan, sedangkan dalam bahasa pemrograman java tidak.
Tipe data primitive pada bahasa pemrograman java Keyword
Deskripsi
Size/Format
(integers) Byte
Byte-length integer
8-bit two's complement
Short
Short integer
16-bit two's complement
Int
Integer
32-bit two's complement
Long
Long integer
64-bit two's complement (real numbers)
Float
Single-precision floating point
32-bit IEEE 754
Double
Double-precision floating point
64-bit IEEE 754
(other types) Char
A single character
16-bit Unicode character
Boolean
A boolean value (true or false)
true or false
Contoh memberikan nilai pada variable anInt bertipe integer: int anInt = 4; Contoh nilai-nilai sebenarnya dan tipe datanya: Nilai sebenarnya Tipe data
MODUL II Dasar-Dasar Pemrograman Bahasa Java
178
Int
8864L
Long
37.266
Double
37.266D
Double
87.363F
Float
26.77e3
Double
'c'
Char
true
Boolean
false
Boolean
2
Tipe data reference berbeda dari tipe data primitive yang merupakan reference ke (suatu alamat dari) sekumpulan nilai yang direpresentasikan oleh variabel. Sebuah reference merupakan pointer atau alamat memory dalam bahasa lain. Array, class dan interface merupakan tipe reference. iii.
Penamaan variabel Syarat-syarat untuk memberi nama variabel : 1. Harus identifier yang resmi. Identifier merupakan sekumpulam karakter Unicode yang tak terbatas yang dimulai dengan huruf. 2. Harus tidak merupakan keyword, nilai Boolean (true atau false) atau kata null. 3. Harus unik dengan scope-nya. Variabel bisa mempunyai nama yang sama seperti variabel yang deklarasinya tampak dalam scope yang berbeda. Aturan untuk memberi nama variabel : Nama variable mulai dengan huruf kecil dan nama class mulai dengan huruf besar. Jika variabel berisi lebih dari satu kata, kata digabung dan setiap kata setelah yang pertama dimulai dengan huruf besar, contohnya: isVisible. Karakter garis bawah (_) diperbolehkan dimana saja dari nama variabel tetapi dengan aturan yang hanya digunakan untuk membatasi kata konstanta (karena konstanta semuanya huruf besar sesui aturan )
iv.
Scope Lokasi deklarasi variabel dan programnya akan membangun scope-nya dan menempatkannya dalam empat kategori berikut ini : 1. member variable 2. local variable 3. method parameter 4. exception-handler parameter
MODUL II Dasar-Dasar Pemrograman Bahasa Java
3
member variable merupakan anggota dari class atau objek yang dideklarasikan dengan sebuah class tetapi diluar method atau constructor. Scope dari member variable merupakan keseluruhan deklarasi class tersebut, tetapi deklarasi tersebut tampak sebelum digunakan pada saat inisialisasi member variable. Local variable dideklarasikan dalam suatu blok. Secara umum, scope dari local variable mulai dari tempat deklarasinya sampai ke akhir blok kode dalam variabel yang dideklarasikan Parameter merupakan argumen formal untuk method atau constructor dan digunakan untuk melewatkan nilai kedalam method dan constructor. Scope dari parameter merupakan keseluruhan method atau constructor unik suatu parameter. Parameter exception-handler hampir sama dengan parameter. Scope dari parameter exception-handler merupakan kode blok antar { dan } yang mengikuti statemen catch. Contoh : if (...) { int i = 17; ... } System.out.println("The value of i = " + i); // error Baris akhir dari kode diatas tidak akan dikompile karena variabel i diluar scope. Scope variabel i antara blok { dan }. Variabel i tidak ada setelah tanda }. v.
Inisialisasi variabel Contoh inisialisai local variable : // integers byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; // real numbers float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; // other primitive types char aChar = 'S'; boolean aBoolean = true; Parameter dan parameter axception-handler tidak dapat diinisialisasi dengan cara ini. Nilai parameter ini di-set oleh pemanggil.
MODUL II Dasar-Dasar Pemrograman Bahasa Java vi.
4
Variabel final Variabel final merupakan variabel dalam scope final dimana nilai variabel final tidak dapat berubah setelah ia diinisialisai. Variabel final ini menyerupai kostanta dalam bahasa pemrograman lain. Untuk mendeklarasikan variabel final menggunakan keyword final dan deklarasi variabel sebelum tipe, contohnya: final int aFinalVar = 0; atau menggunakan statement yang mendeklarsikan variabel final kemudian menginisialisasinya seperti contoh berikut ini: final int blankfinal; ... blankfinal = 0; Apabila variabel final local ini telah diinisialisasi maka ia tidak dapat di-set dan jika diberikan nilai ke variabel ini (dalam contoh blankfinal) maka akan menghasilkan error pada saat dikompile.
II.2. Operator Operator digunakan untuk melakukan berbagai operasi seperti aritmatika dan assignment. Kategori-kategori operator : 1. Operator aritmatika Tabel operator binary Operator
Use
Deskripsi
+
Op1 + op2
Menambahkan op1 dan op2
-
Op1 - op2
Mengurangi op2 dari op1
*
Op1 * op2
Mengalikan op1 dengan op2
/
Op1 / op2
Membagi op1 dengan op2
%
Op1 % op2
Menghitung sisa dari pembagian op1 dengan op2 Table operator unary
Operator
Penggunaan
Deskripsi
+
+op
Menaikkan nilai op ke int jika ini merupakan byte, short atau char
-
-op
Mengurangi op secara aritmatika Table operator incremen/decremen
2.
Operator
penggunaan
Deskripsi
++
op++
Menaikkan op ke 1, mengevaluasi nilai op sebelum dinaikkan.
++
++op
Menaikkan op ke 1, mengevlaluasi nilai op setelah dinaikkan
--
op--
Menurunkan op ke 1, mengevaluasi nilai op sebelum dikurangi
--
--op
Menurunkna op ke 1, mengevaluasi nilai op setelah diturunkan.
Operator relasional dan kondisional Tabel operator relasional Operator
penggunaan
Memberikan nilai true jika
MODUL II Dasar-Dasar Pemrograman Bahasa Java
5
>
op1 > op2
op1 lebih besar dari op2
>=
op1 >= op2
op1 lebih besar atau sama dengan op2
<
op1 < op2
op1 kurang dari op2
<=
op1 <= op2
op1 kurang dari atau sama dengan op2
==
op1 == op2
op1 dan op2 sama
!=
op1 != op2
op1 dan op2 tidak sama
Tabel operator kondisional Operator
3.
Penggunaan
Memberikan nilai true jika
&&
op1 && op2
op1 dan op2 true
||
op1 || op2
Salah satunya true
!
! op
op adalah false
&
op1 & op2
Keduanya true
|
op1 | op2
Salah satunya true
^
op1 ^ op2
Jika op1 dan op2 berbeda
Operator shift dan logika Tabel operator shift Operator
Penggunaan
Operasi
>>
op1 >> op2
Menggeser bit op1 kekanan sepanajng op2
<<
op1 << op2
Menggeser bit op1 kekiri sepanajng op2
>>>
op1 >>> op2
Menggeser bit op1 kekanan sebesar op2 (tidak bertnada)
Contoh : 13 >> 1; Menggeser bit integer 13 kekanan satu. Representasi biner dari 13 adalah 1101 dan hasil operasi pergeseran adalah 110 atau 6 dalam desimal dimana bit sebelah kiri diisi o yaitu menjadi 0110
Tabel operator logika
4.
Operator
Penggunaan
Operasi
&
Op1 & op2
bitwise and
|
Op1 | op2
bitwise or
^
Op1 ^ op2
bitwise xor
~
~op2
bitwise komplemen
Operator assignment Tabel operator assignment
MODUL II Dasar-Dasar Pemrograman Bahasa Java
5.
6
Operator
Penggunaan
Sama dengan
+=
op1 += op2
op1 = op1 + op2
-=
op1 -= op2
op1 = op1 - op2
*=
op1 *= op2
op1 = op1 * op2
/=
op1 /= op2
op1 = op1 / op2
%=
op1 %= op2
op1 = op1 % op2
&=
op1 &= op2
op1 = op1 & op2
|=
op1 |= op2
op1 = op1 | op2
^=
op1 ^= op2
op1 = op1 ^ op2
<<=
op1 <<= op2
op1 = op1 << op2
>>=
op1 >>= op2
op1 = op1 >> op2
>>>=
op1 >>>= op2
op1 = op1 >>> op2
Operator lainnya Operator
Deskripsi
?:
Shortcut if-else statement
[]
Digunakan untuk mendeklarsikan arrays, membuat arrays, dan mengakses elemen array
.
Digunakan untuk membentuk names
( params ) Membatasi daftar parameter-parameter yang dibatasi koma ( type )
Berkelakuan (mengkonversi) suatu nilai ke tipe tertentu
New
Membuat objek baru atau array baru
instanceof
Menentukan apakah operan pertamanya merupakan sebuah instan dari operan kedua
II.3. Ekspresi, statement dan blok a. Ekspresi Ekspresi adalah sekumpulan variabel, operator dan method call yang mengevaluasi nilai tunggal ... // other primitive types char aChar = 'S'; boolean aBoolean = true; // display them all System.out.println("The largest byte value is " + largestByte); ... if (Character.isUpperCase(aChar)) { ... }
MODUL II Dasar-Dasar Pemrograman Bahasa Java Setiap ekspresi dalam tabel berikut ini akan melakukan opersi dan memberikan nilai. postfix operators
[] . (params) expr++ expr--
unary operators
++expr --expr +expr -expr ~ !
creation or cast
new (type)expr
Multiplicative
*/%
Additive
+-
Shift
<< >> >>>
Relational
< > <= >= instanceof
Equality
== !=
bitwise AND
&
bitwise exclusive OR
^
bitwise inclusive OR
|
logical AND
&&
logical OR
||
Conditional
?:
Assignment
= += -= *= /= %= &= ^= |= <<= >>= >>>=
b. Statement Suatu statement akan membentuk suatu unit eksekusi yang lengkap. Tipe-tipe ekspresi berikut ini dapat dibuat menjadi sebuah statement yang diakhiri dengan titik koma (;) : Assignment expressions Berbagai penggunaan dari ++ atau - Method calls Ekspresi-ekspresi pembuatan objek Contoh : aValue = 8933.234; //assignment statement aValue++; //increment statement System.out.println(aValue);//method call statement Integer integerObject = new Integer(4); //object creation statement c.
Blok Blok sekelompok dari nol atau lebih statement diantara kurung kurawal yang seimbang. Contoh berikut ini menunjukkan dua blok dari program yang berisi statement tunggal : if (Character.isUpperCase(aChar)) { System.out.println("The character " + aChar + " is upper case."); } else { System.out.println("The character " + aChar + " is lower case."); }
7
MODUL II Dasar-Dasar Pemrograman Bahasa Java
II.4. Flow control statement Bentuk umum control flow statement: control flow statement details { statement(s) } Tabel flow control statement Tipe statement
Keyword
looping
while, do-while , for
Pembuat keputusan
if-else, switch-case
exception handling
try-catch-finally, throw
pencabangan
break, continue, label:, return
1. looping a. while Sintaks umum: while (expression) { statement } Contoh : int i = 0; char c = copyFromMe.charAt(i); while (c != 'g') { copyToMe.append(c); c = copyFromMe.charAt(++i); } System.out.println(copyToMe); b. do-while Sintaks umum : do { statement(s) } while (expression); Contoh : int i = 0; char c = copyFromMe.charAt(i); do { copyToMe.append(c); c = copyFromMe.charAt(++i); } while (c != 'g'); System.out.println(copyToMe); c.
for Sintaks umum : for (initialization; termination; increment) { statement } Contoh : for (int i = 0; i < arrayOfInts.length;i++) { System.out.print(arrayOfInts[i] + " "); }
8
MODUL II Dasar-Dasar Pemrograman Bahasa Java
2. Pembuat keputusan a. if Bentuk umum : if (expression) { statement(s) } Contoh : if (DEBUG) { System.out.println("DEBUG: x = " + x); } b. if-else Bentuk umum : if (expression) { statement(s) } else { statement(s) } Contoh : if (testscore >= 90) { grade = 'A'; } else if (testscore >= 80) { grade = 'B'; } else if (testscore >= 70) { grade = 'C'; } else if (testscore >= 60) { grade = 'D'; } else { grade = 'F'; } c.
switch-case Contoh : switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; }
3. exception handling a. try-catch-finally Bentuk umum : try { Java statements } Contoh : PrintWriter out = null;
9
MODUL II Dasar-Dasar Pemrograman Bahasa Java try { System.out.println("Entering try statement"); out = new PrintWriter( new FileWriter("OutFile.txt")); for (int i = 0; i < size; i++) out.println("Value at: " + i + " = " + victor.elementAt(i)); } Bentuk umum : try { statement(s) } catch (exceptiontype name) { statement(s) } Contoh : try { ... out.close(); // don't do this; it duplicates code } catch (ArrayIndexOutOfBoundsException e) { out.close(); // don't do this; it duplicates code System.err.println("Caught ArrayIndexOutOfBoundsException: " + e.getMessage()); } catch (IOException e) { System.err.println("Caught IOException: " + e.getMessage()); } Bentuk umum : try { statement(s) } catch (exceptiontype name) { statement(s) } finally { statement(s) } Contoh : try { System.out.println("Entering try statement"); out = new PrintWriter( new FileWriter("OutFile.txt")); for (int i = 0; i < size; i++) out.println("Value at: " + i + " = " + victor.elementAt(i)); } catch (ArrayIndexOutOfBoundsException e) { System.err.println("Caught ArrayIndexOutOfBoundsException: " + e.getMessage()); } catch (IOException e) { System.err.println("Caught IOException: " + e.getMessage()); } finally { if (out != null) { System.out.println("Closing PrintWriter"); out.close(); } else { System.out.println("PrintWriter not open"); } }
b. throw Bentuk umum :
10
MODUL II Dasar-Dasar Pemrograman Bahasa Java
11
throw someThrowableObject; Semua method java menggunakan statement throw untuk melemparkan exception. Statement ini memerlukan argumen tunggal sebuah objek throwable. Dalam sistem java, objek-objek throwable ini merupakan instance dari berbagai subclass dari class Throwable. Jika anda mencoba melemparkan sebuah objek yang bukan throwable, kompiler menolak utuk mengkompile program tersebut dan menampilkan pesan error yang menyerupai berikut ini : testing.java:10: Cannot throw class java.lang.Integer; it must be a subclass of class java.lang.Throwable. throw new Integer(4); ^ Contoh : public Object pop() throws EmptyStackException { Object obj; if (size == 0) throw new EmptyStackException(); obj = objectAt(size - 1); setObjectAt(size - 1, null); size--; return obj; } 4. Pencabangan a. break - break berlabel Statement break akan membuat keluar dari blok label tersebut Contoh : search: for ( ; i < arrayOfInts.length; i++) { for (j = 0; j < arrayOfInts[i].length; j++) { if (arrayOfInts[i][j] == searchfor) { foundIt = true; break search; } } } Statement break akan membuat pencarian keluar dari label search. - break tidak berlabel Statement break akan membuat keluar dari statement switch, pengulangan for, while-do, do-while,dsb. Contoh : for ( ; i < arrayOfInts.length; i++) { if (arrayOfInts[i] == searchfor) { foundIt = true; break; } } Statement break membuat pencarian nilai keluar dari pengulangan for b. continue Statement continue digunakan untuk melompat ke iterasi saat ini dari pengulangan while,do-while dan for. Contoh : public class ContinueDemo { public static void main(String[] args) { StringBuffer searchMe = new StringBuffer( "peter piper picked a peck of pickled peppers");
MODUL II Dasar-Dasar Pemrograman Bahasa Java
12
int max = searchMe.length(); int numPs = 0; for (int i = 0; i < max; i++) { //interested only in p's if (searchMe.charAt(i) != 'p') continue; //process p's numPs++; searchMe.setCharAt(i, 'P'); } System.out.println("Found " + numPs + " p's in the string."); System.out.println(searchMe); } } Keluaran program ini: Found 9 p's in the string. Peter PiPer Picked a Peck of Pickled PePPers c.
label Label adalah sebuah identifier yang diletakkan sebelum statement dan diikuti dengan titik dua (:). bentuk umum : statementName: someJavaStatement;
d. return Statement ini digunakan untuk keluar dari method saat ini. Statement return ini mempunyai dua bentuk yaitu yang mengembalikan nilai dan tidak. Contoh yang mengembalikan nilai : return ++count; Contoh yang tidak mengembalikan nilai : return; Latihan 1. Tuliskan kembali program berikut ini a. Latihan menggunakan variabel dan operator public class MaxVariablesDemo { public static void main(String args[]) { // integers byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; // real numbers float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; // other primitive types char aChar = 'S'; boolean aBoolean = true; //a few numbers int i = 37; int j = 42;
MODUL II Dasar-Dasar Pemrograman Bahasa Java double x = 27.475; double y = 7.22;
// display them all System.out.println("The largest byte value is " + largestByte); System.out.println("The largest short value is " + largestShort); System.out.println("The largest integer value is " + largestInteger); System.out.println("The largest long value is " + largestLong); System.out.println("The largest float value is " + largestFloat); System.out.println("The largest double value is " + largestDouble); if (Character.isUpperCase(aChar)) { System.out.println("The character " + aChar + " is upper case."); } else { System.out.println("The character " + aChar + " is lower case."); } System.out.println("The value of aBoolean is " + aBoolean); System.out.println("Variable values..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" x = " + x); System.out.println(" y = " + y); //adding numbers System.out.println("Adding..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y)); //subtracting numbers System.out.println("Subtracting..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); //multiplying numbers System.out.println("Multiplying..."); System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y)); //dividing numbers System.out.println("Dividing..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); //computing the remainder resulting from dividing numbers System.out.println("Computing the remainder..."); System.out.println(" i % j = " + (i % j)); System.out.println(" x % y = " + (x % y)); //mixing types System.out.println("Mixing types..."); System.out.println(" j + y = " + (j + y)); System.out.println(" i * x = " + (i * x));
} }
13
MODUL II Dasar-Dasar Pemrograman Bahasa Java
b. Latihan menggunakan pengulangan while public class WhileDemo { public static void main(String[] args) { String copyFromMe = "Copy this string until you " + "encounter the letter 'g'."; StringBuffer copyToMe = new StringBuffer(); int i = 0; char c = copyFromMe.charAt(i); while (c != 'g') { copyToMe.append(c); c = copyFromMe.charAt(++i); } System.out.println(copyToMe); } } c.
Latihan menggunakan pengulangan do-while public class DoWhileDemo { public static void main(String[] args) { String copyFromMe = "Copy this string until you " + "encounter the letter 'g'."; StringBuffer copyToMe = new StringBuffer(); int i = 0; char c = copyFromMe.charAt(i); do { copyToMe.append(c); c = copyFromMe.charAt(++i); } while (c != 'g'); System.out.println(copyToMe); } }
d. Latihan menggunakan pengulangan for public class ForDemo { public static void main(String[] args) { int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 }; for (int i = 0; i < arrayOfInts.length; i++) { System.out.print(arrayOfInts[i] + " "); } System.out.println(); } } e. Latihan menggunakan if, if-else dan switch-case public class SwitchDemo { public static void main(String[] args) { int month = 8; switch (month) {
14
MODUL II Dasar-Dasar Pemrograman Bahasa Java case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; } } } f. Latihan menggunakan label,continue, break dan return public class LabelDemo { public static void main(String[] args) { int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 }; int searchfor = 12; int i = 0; boolean foundIt = false; for ( ; i < arrayOfInts.length; i++) { if (arrayOfInts[i] == searchfor) { foundIt = true; break; } } if (foundIt) { System.out.println("Found " + searchfor + " at index " + i); } else { System.out.println(searchfor + "not in the array"); } } }
public class ContinueDemo { public static void main(String[] args) { StringBuffer searchMe = new StringBuffer( "peter piper picked a peck of pickled peppers"); int max = searchMe.length(); int numPs = 0; for (int i = 0; i < max; i++) { //interested only in p's if (searchMe.charAt(i) != 'p') continue; //process p's numPs++; searchMe.setCharAt(i, 'P');
15
MODUL II Dasar-Dasar Pemrograman Bahasa Java
16
} System.out.println("Found " + numPs + " p's in the string."); System.out.println(searchMe); } }
public class ContinueWithLabelDemo { public static void main(String[] args) { String searchMe = "Look for a substring in me"; String substring = "sub"; boolean foundIt = false; int max = searchMe.length() - substring.length(); test: for (int i = 0; i <= max; i++) { int n = substring.length(); int j = i; int k = 0; while (n-- != 0) { if (searchMe.charAt(j++) != substring.charAt(k++)) { continue test; } } foundIt = true; break test; } System.out.println(foundIt ? "Found it" : "Didn't find it"); } }
2. Buatlah program aplikasi untuk jumlah huruf vocal (a,e,I,o,u) pada kalimat sederhana bertipe String “you are studying java programming basics” yang menampikan tampilan berikut ini :
3. Buatlah program applet untuk no (2) 4. a. Buatlah program aplikasi yang membalikkan kalimat “you are studying programming basics.” yang menampilkan :
b. Buatlah applet dari (a) 5. a. Buatlah program aplikasi yang menghitung jumlah kata dalam kalimat “you are studying java programming basics.” Yang menampilkan :
MODUL II Dasar-Dasar Pemrograman Bahasa Java
17
b. Buatlah applet dari (a)
Kuis 1. Buatlah program aplikasi dan applet sederhana dengan menggunakan variabel, operator, perulangan dan pembuat keputusan ! (program bebas) 2. Apa tujuan yang hendak dicapai pada modul II ini? 3. Apa yang anda ketahui tentang exception handling ? Jelaskan !