Exception Handling and Multithreading

dokumen-dokumen yang mirip
public class Test { int i = 6; int j = 3; System.out.println(i/j); } Output :

EXCEPTION HANDLING. 1. Mampu menangani eksepsi 2. Mengetahui dan memahami tentang multithreading 3. Dapat membuat program tentang exception handling

Exception Handling. Oleh : Agus Priyanto, M.Kom

Pemrograman Berorientasi Obyek (IT251) Ramos Somya, S.Kom., M.Cs.

Thread. 16 th week Estu Sinduningrum ST,MT

PENANGANAN EKSEPSI. class Exc0 { public static void main (String args[]) { int d = 0; int a = 42 / d; } }

Percobaan 6 Exception

Network Programming 2010 Pemrograman Multi-Thread

PERCOBAAN 6 EXCEPTION

BAB 2. Class Thread. Setelah mempelajari modul ini peserta diharapkan dapat: Mengenal Kelas Thread Menggunakan Kelas Thread dalam aplikasi

Kelompok 12. Thread Java

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

IF PEMROGRAMAN LANJUT EXCEPTION. Oleh : Andri Heryandi, M.T.

Tidak ada satupun dari pilihan di atas yang benar karena checked exception tidak bisa ditulis

PRAKTIKUM 17 MENANGANI EXCEPTION

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Definisi Eksepsi (exception)

Java Progamming Multithreading

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

EXCEPTION. 2. Pada kondisi bagaimana klausa finally tidak akan dieksekusi? Kode didalam block try memiliki statement return

Waktu Sisa : 0:43:4. Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum. Mengerjakan finally. Diluar block

Exception Handling. Topik

1. Apa yang harus dilakukan oleh programmer untuk menangani user-defined exception? Menuliskan exception sebagai start method

Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Pemrograman Berorientasi Object

PRAKTIKUM 6 EXCEPTION

Sesi 8. Event Handling & Exception Handling. Tujuan Intruksional

Pemrograman Berbasis Objek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Pemrograman Lanjut Exception Handling PTIIK

Pemrograman Berorientasi. Exception Handling

PERTEMUAN VII Multithreaded Programming. Praktikan mampu membuat program sederhana mengenai threading

Tujuan Intruksional. Mampu menjelaskan tentang event handling Mampu menjelaskan tentang method Mampu menggunakan event handling Mampu membuat method

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

Menangkap Kesalahan (Error Handling)

Bahasa Pemrograman 2.

IKG2I4 / Software Project I

PRAKTIKUM PEMROGRAMAN OBJEK DENGAN JAVA MODUL KE-5 EXCEPTION HANDLING

Praktikum 9 Exception Handling

BAB Tujuan. 2.2 Apa itu Exception? Pendahuluan Error dan Exception Classes

Class Thread juga menyediakan beberapa constants sebagai nilai prioritas. Tabel berikut ini adalah rangkuman dari class Thread.

03/04/2018. Pemrograman Berorientasi Object

4/11/2013. Topik. Exceptions dan Assertions Pengenalan Pemrograman 2. Topik. Topik EXCEPTIONS. Class Error dan Exception

Score: Persentase: % ~ u ~ Generated by Foxit PDF Creator Foxit Software For evaluation only.

PERTEMUAN 3 OBJEK DAN CLASS

PERTEMUAN 7 MULTITHREADED PROGRAMMING

Modul 4 Exception, I/O, dan Operasi File

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

Membuat dan Menggunakan Class

Konsep Lanjut Pemrograman Berorientasi Obyek

EXCEPTION HANDLING. Bug : kesalahan yang merupakan kelemahan dari perancangan atau implementasi

PRAKTIKUM I EXCEPTION HANDLING

BAB 2 COLLECTION & THREAD

Pada pembuatan game di java, sering kali para programer. mendefinisikan banyak object seperti suara, gambar, dan grafik geometri yang

2 TIPE DATA DAN VARIABEL

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

PEMROGRAMAN BERORIENTASI OBJEK COLLECTION DAN MULTITHREADING. ADAM MUKHARIL BACHTIAR TEKNIK INFORMATIKA UNIKOM

PEMROGRAMAN JAVA : EXCEPTION

Mengunci sebuah object: Untuk memastikan bahwa hanya satu thread yang mendapatkan hak akses kedalam method tertentu

MODUL 9 EXCEPTION HANDLING

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

BAB II VARIABEL DAN TIPE DATA

IT652 Pemrograman Berorientasi Aspek. Ramos Somya

Abstract Class dan Interface. Viska Mutiawani, M.Sc

Badiyanto, S.Kom., M.Kom. PBO java

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

Exception Handling. Prepared by Viska Mutiawani. 1

BAB IX THREAD Thread ClassThread namavar = new ClassThread(); Namavar.start(); New ClassThread().start();

Exception. Oleh: Mike Yuliana PENS-ITS

Pemrograman Berorientasi Objek Collection dan Multithreading. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

MODUL 7 - EXCEPTION HANDLING

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Topik. Penanganan Eksepsi. Menangkap Eksepsi. Catch Secara bertingkat. Melontarkan Eksepsi. Melontarkan kembali Eksepsi.

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

BAHASA PEMROGRAMAN JAVA

1. Mampu mengimplementasikan thread dalam sebuah aplikasi 2. Memahami kegunaan thread dalam aplikasi

DASAR PEMOGRAMAN JAVA

Penanganan Kesalahan

Exception Handling Lanjutan

Pemrograman Berorientasi Objek 2

Penjebakan Eksepsi. Nur hasanah, M.Cs

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

Paket dan Interface. 15 th week Estu Sinduningrum ST,MT

1.Tujuan. 2. Latar Belakang

Processes vs. Threads

PEMAHAMAN DASAR DASAR JAVA

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

PEMOGRAMAN JAVA. Yoannita, S.Kom. Class(ii) [Constructor] [keyword this] Modifier Passing parameter [by value] [by references]

CHAPTER #5 DEBUGGING AND EXCEPTION HANDLING

BAB 5 Mendapatkan Input dari Keyboard

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

PEMROGRAMAN JAVA : THREAD

Jelaskan tentang konsep Cohesion & Coupling!

Modul Tutorial C# 2 DASAR PEMROGRAMAN C# : STATEMENT DAN OPERATOR ENRICO BUDIANTO MICROSOFT INNOVATION CENTER UNIVERSITAS INDONESIA

Gambar 1: Hirarki class

JAVA BASIC PROGRAMMING Joobshet

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

Referensi Bahasa Pemrograman Java

Transkripsi:

Pertemuan 7 Halaman 1/1 Pengertian Exception Suatu program apabila mengalami kesalahan akan menghasilkan suatu runtime errors seperti gagal membuka file, suatu program melakukan akses diatas range array dan lain-lain. ketika runtime errors tersebut terjadi, aplikasi akan membuat suatu exception Java exception merupakan instance dari class Throwable. Throwable class terdapat dalam java.lang package Jenis-jenis Exception RuntimeException IOException Exception AWTException InstantiationException Throwable... LinkageError Error Virtual Machine Error AWTError... Gambar 7.1. Diagram Subclass dari Throwable class

Pertemuan 7 Halaman 2/2 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. Cara menggunakan Exception Java exception dibagi menjadi tiga buah operasi yaitu : 1. Claiming an exception Claiming an exception dimaksudkan dengan menyatakan exception apa saja yang mungkin terjadi dalam suatu main() ataupun dalam method. Untuk system errors dan runtime errors tidak perlu dilakukan klaim karena kedua macam kesalahan ini dapat terjadi dimana saja. Untuk melakukan claiming an exception dilakukan dengan menggunakan throws keyword. Contoh : public void mymethod() throws IOException {... untuk melakukan klaim terhadap banyak exception dapat dilakukan dengan menambahkan exception dipisahkan dengan koma (, ). method_declaration throws Exception1, Exception2,... Exception n 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. Untuk melakukan throwing exception kita menggunakan keyword throw didalam method yang telah melakukan claim exception. 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

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 trycatch. 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 : Method Name Description public String getmessage() mengambil message lengkap dari throwable object public String tostring() mengambil message singkat dari throwable object public String getlocalizedmessage() berisi sama dengan getmessage() apabila tidak dilakukan override pada subclassnya public void printstacktrace() mencetak informasi dari Trowable object dan penjejakannya

Pertemuan 7 Halaman 4/4 Contoh : public class ExceptionTest { int x = 2; int y = 0; System.out.println(x/y); System.out.println("this never executed"); jika dijalankan akan menghasilkan : java.lang.arithmeticexception: / by zero at ExceptionTest.main(ExceptionTest.java:6) Setelah diberikan exception handler maka : public class ExceptionTest { int x = 2; int y = 0; try { System.out.println(x/y); catch (ArithmeticException ex) { System.out.println("you divide x by 0"); System.out.println("this never executed"); Maka hasilnya sekarang adalah : you divide x by 0 this never executed Membuat Exception Class 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(). Perhatikan contoh berikut :

Pertemuan 7 Halaman 5/5 Pada ExceptionTest.java public class ExceptionTest { int x = 2; int y = 3; try { if((x==2) && (y==3)) throw new MyException(x,y); System.out.println(x/y); catch (MyException ex) { System.out.println(ex.toString()); System.out.println("this never executed"); Pada MyException.java class MyException extends Exception { int x; int y; MyException(int x,int y) { super("myexception"); this.x = x; this.y = y; public String tostring() { return(""+x+" divide by "+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 {

Pertemuan 7 Halaman 6/6 statements; catch(theexception ex) { perform operations before exits; throw ex; Klausa finally Finally digunakan apabila menginginkan menjalankan suatu operasi tanpa dipengaruhi apakah terjadi exception atau tidak. Dengan finally suatu operasi tidak akan mengalami peloncatan alur. Struktur try-cacth-finally adalah sebagai berikut : try { statements; catch(theexception ex) { handling ex statements; finally { finalstatements; Perhatikan tiga kasus berikut : 1. Jika tidak ada exception dalam blok try-catch, maka finalstatements akan selalu dieksekusi dan statement selanjutnya setelah blok try-catch dieksekusi. 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.

Pertemuan 7 Halaman 7/7 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. Di bawah ini adalah method yang digunakan untuk mengoperasikan thread Method public void run() public void start() public void stop() public void suspend() public void resume() public statis void sleep(long millis) throws InterruptedException public void interrupt() public static boolean Description Digunakan untuk mengimplementasikan task yang akan dikerjakan oleh thread. method ini dapat di-override untuk diisi dengan code yang diinginkan Digunakan untuk menjalankan suatu thread object Digunakan untuk menghentikan suatu thread object Digunakan untuk menghentikan sementara suatu thread object Digunakan untuk mengaktifkan kembali suatu thread object yang disuspend. Digunakan untuk membuat thread object berhenti sementara dalam waktu hitungan millisecond Digunakan untuk menginterupsi suatu thread object digunakan untuk tes apakah suatu thread object

Pertemuan 7 Halaman 8/8 interrupted() public boolean isactive() public void setpriority(int p) mengalami interupsi digunakan untuk menguji apakah suatu thread object masih aktif digunakan untuk melakukan set prioritas dari thread dengan range 1-10 Cara membuat thread adalah dengan menurunkan Thread class class MyThread extends Thread {... Kemudian MyThread yang dibuat harus melakukan override pada method run(). Untuk membuat instance dari thread dilakukan instantiation dengan menggunakan constructor. Thread tersebut kemudian dijalan pada class lain sebagai client contoh : class TestingThread { MyThread themythread = new MyThread(); themythread.start(); Contoh menggunakan thread class : public class TestThread { PrintChar printa = new PrintChar( a,100); PrintChar printb = new PrintChar( b,100); PrintNum print100 = new PrintNum(100); print100.start(); printa.start(); printb.start(); Pada PrintChar.java class PrintChar extends Thread { private char chartoprint; private int times;

Pertemuan 7 Halaman 9/9 public PrintChar(char c, int t) { chartoprint = c; times = t; public void run() { for(int i=1;i<times;i++) System.out.print(" "+chartoprint); Pada PrintNum.java class PrintNum extends Thread { private int lastnum; public PrintNum(int t) { lastnum = t; public void run() { for(int i=1;i<=lastnum;i++) System.out.print(" "+i); 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.

Pertemuan 7 Halaman 10/10 resume Thread Created ready Stop finished Start New Run Yield or Time Expired Stop or Complete Stop running Suspend or Sleep inactive Gambar 8.1. State dari Thread object 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.

Pertemuan 7 Halaman 11/11 Thread priority Prioritas thread dapat diatur dengan menggunakan method setpriority(). Untuk dapat mengetahui prioritas suatu thread dapat digunakan method getpriority(). Thread class mempunyai 3 buah konstanta prioritas yaitu : Constant Integer Value MIN_PRIORITY 1 NORM_PRIORITY 5 MAX_PRIORITY 10 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. Perhatikan contoh berikut : ubah kelas ThreadTest menjadi public class TestThread { PrintChar printa = new PrintChar('a',100); PrintChar printb = new PrintChar('b',100); PrintNum print100 = new PrintNum(100); 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.