Professional Documents
Culture Documents
Jenis-jenis Exception
RuntimeException
IOException
AWTException
Exception
InstantiationException
...
Throwable
LinkageError
Error
Virtual Machine Error
AWTError
...
§ Exception class merupakan kesalahan yang disebabkan oleh program dan kesalahan
external. Kesalahan jenis ini dapat ditangkap dan diatasi oleh program. Exception
terdiri dari banyak subclass yaitu seperti terlihat pada Gambar 7.1.
§ Error class merupakan class yang berhubungan dengan kesalahan pada internal
system. Jika terjadi kesalahan jenis ini maka hanya dapat dilakukan bagaimana
memberitahu kepada pemakai dan melakukan pengakhiran program.
2. Throwing an exception
Throwing an exception dimaksudkan dengan apabila suatu kesalahan terjadi maka
method berisi statement yang melakukan claiming an exception tersebut membuat
suatu exception object yang dilempar ke dalam sistem.
throw ExceptionObjectInstance;
3. Catching an exception
Catching an exception dimaksudkan apabila exception object yang dilempar
kedalam sistem akan ditangkap untuk diatasi dalam exception handler. Metode
Bahasa Pemrograman I Exception Handling and Multithreading
Pertemuan 7 Halaman 3/3
pencarian handler ini dilakukan secara backward yaitu pencarian dimulai dengan
method yang dieksekusi sampai ke pemanggil method tersebut.
Untuk melakukan catching an exception dapat dilakukan digunakan suatu blok try-
catch.
try {
statements; // statements that may throw exceptions
}
catch (Exception1 ex) {
handler for Exception1;
}
catch (Exception2 ex) {
handler for Exception2;
}
...
catch(ExceptionN ex) {
handler for ExceptionN;
}
jika tidak terjadi suatu exception pada statements maka blok catch akan dilewati. Jika
ada suatu exception yang dikenali pada blok catch maka exception akan diatasi oleh
handler statement untuk exception tersebut. Sedangkan jika ada suatu exception yang
tidak dikenali maka java keluar dari method dan mengirim exception ke method
sebelumnya yang memanggil method tersebut. Hal ini dilakukan sampai method
pemanggil awal dicapai dan bila masih belum terdapat handler dari exception ini
maka program terhenti dan menampilkan pesan ke java console.
Exception object membawa informasi penting mengenai exception yang terjadi. untuk
itu dapat digunakan method dibawah ini :
Contoh :
public class ExceptionTest {
try {
System.out.println(x/y);
} catch (ArithmeticException ex) {
System.out.println("you divide x by 0");
}
}
}
Selain menggunakan exception class yang sudah ada pada java, exception class
dapat diturunkan menjadi suatu exception class yang baru. Cara membuatnya adalah
dengan menurunkan exception class dan meng-override method toString() atau
getLocalizedMessage().
Pada ExceptionTest.java
try {
if((x==2) && (y==3))
throw new MyException(x,y);
System.out.println(x/y);
} catch (MyException ex) {
System.out.println(ex.toString());
}
}
}
Pada MyException.java
class MyException extends Exception {
int x;
int y;
MyException(int x,int y) {
super("MyException");
this.x = x;
this.y = y;
}
Rethrowing Exception
Ketika suatu exception terjadi dalam suatu method, maka alir program akan keluar
dari method jika suatu tidak ditangkap pada method tersebut. Jika ingin melakukan
beberapa operasi yang harus dilakukan sebelum keluar dari method maka exception dapat
ditangkap terlebih dahulu baru kemudian dilempar kembali ke handler yang sebenarnya.
Strukturnya adalah sebagai berikut :
try {
Bahasa Pemrograman I Exception Handling and Multithreading
Pertemuan 7 Halaman 6/6
statements;
}
catch(TheException ex) {
perform operations before exits;
throw ex;
}
Klausa finally
2. Jika salah satu statement dalam blok try-catch menyebabkan exception dan ditangkap
oleh blok catch . Statement selanjutnya dalam blok try akan diloncati, kemudian
finalStatements. Jika exception tidak di lempar ulang dengan menggunakan keyword
throw maka statement setelah blok try-catch akan dieksekusi. Akan tetapi sebaliknya
maka eksekusi akan dikembalikan ke method pemanggilnya.
3. Jika salah satu statement dalam blok try-catch menyebabkan exception dan tidak ada
blok catch yang memenuhi exception tersebut maka statement dalam blok try akan
diloncati dan finalStatements dijalankan dan eksekusi akan dikembalikan ke method
pemanggilnya.
Pengertian Thread
Thread merupakan aliran eksekusi dari suatu task dalam program, dimana task
tersebut mempunyai awal dan akhir. dengan thread suatu task dapat berjalan secara
bersamaan yang disebut dengan multithreading.
Pada multiprocessor system thread secara bersamaan dapat dieksekusi oleh processor.
sedangkan pada single-processor system, thread berbagi CPU Time.
Multithreading dapat membuat program bekerja lebih respon dan interaktif. Thread dapat
dibuat dengan menurunkan Thread class atau melakukan implements dari interface
Runnable. Keduanya berada pada java.lang package.
Thread Class
Thread class digunakan untuk membuat suatu thread.
Method Description
public void run() Digunakan untuk mengimplementasikan task
yang akan dikerjakan oleh thread. method ini
dapat di-override untuk diisi dengan code yang
diinginkan
public void start() Digunakan untuk menjalankan suatu thread
object
public void stop() Digunakan untuk menghentikan suatu thread
object
public void suspend() Digunakan untuk menghentikan sementara
suatu thread object
public void resume() Digunakan untuk mengaktifkan kembali suatu
thread object yang disuspend.
public statis void Digunakan untuk membuat thread object
sleep(long millis) berhenti sementara dalam waktu hitungan
throws millisecond
InterruptedException
public void interrupt() Digunakan untuk menginterupsi suatu thread
object
public static boolean digunakan untuk tes apakah suatu thread object
Kemudian MyThread yang dibuat harus melakukan override pada method run().
Thread tersebut kemudian dijalan pada class lain sebagai client contoh :
class TestingThread {
public static void main(String [] args) {
MyThread theMyThread = new MyThread();
theMyThread.start();
}
}
print100.start();
printA.start();
printB.start();
}
Pada PrintChar.java
class PrintChar extends Thread {
private char charToPrint;
private int times;
Pada PrintNum.java
class PrintNum extends Thread {
private int lastNum;
public PrintNum(int t) {
lastNum = t;
}
Interface Runabble
Jika suatu class misal class A sudah melakukan extends terhadap class lain maka
untuk membuat class A menjadi suatu thread class adalah dengan melakukan implements
dari Runnable interface.
Hampir sama dengan Thread class, class A yang melakukan implementasi Runnable
harus meng-override method run().
Thread States
Thread object mempunyai lima buah nilai state yaitu new, ready, running, inactive atau
finished.
resume
Thread
ready Stop finished
Created
Start
Yield
or Stop
Run Stop
Time or
New Expired Complete
Suspend
running or inactive
Sleep
pada saat suatu thread dibuat maka thread object akan memasuki new state. Setelah
thread object dipanggil method start() maka thread akan memasuki ready state. Thread
object yang sudah ready akan berjalan setelah sistem operasi berhasil mengalokasikan
CPU time untuk thread object tersebut.
Thread object yang sudah dieksekusi dapat kembali ke ready state apabila CPU time dari
thread object tersebut habis atau memanggil method yield().
Thread object dapat memasuki inactive state apabila ada pemanggilan method suspend()
atau sleep() namun akan memasuki ready state kembali apabila method resume()
dipanggil atau waktu sleep sudah habis.
Thread object akan memasuki finished state apabila method stop() dipanggil atau run()
method sudah selesai.
Untuk mengetahui state dari thread kita dapat menggunakan method isAlive(). Jika hasil
yang didapat true maka thread dalam keadaan ready, inactive atau running state. Jika
hasil yang didapat false maka thread dalam keadaan new dan belum berjalan atau dalam
finished state.
Thread priority
Default dari prioritas thread adalah NORM_PRIORITY. Thread dengan prioritas yang
mempunyai prioritas paling rendah akan berjalan apabila tidak ada thread dengan
prioritas paling tinggi.
print100.setPriority(Thread.MIN_PRIORITY);
printA.setPriority(Thread.NORM_PRIORITY);
printB.setPriority(Thread.MAX_PRIORITY);
print100.start();
printA.start();
printB.start();
}
}
Synchronization
Synchronization dilakukan untuk menghindari konflik resource pada saat beberapa
thread mengakses resource yang sama. Synchronization dilakukan dengan menambah
keyword synchronized pada method yang akan dipanggil.