throws & throw

throws (มี s) ใช้ระบุว่าเมธอดนี้ อาจจะ ส่ง exception

throw (ไม่มี s) ใช้ส่ง exception

สอนคอมฟรี

เมธอด go() ของคลาส A จะโยน exception เมื่อพารามิเตอร์ n < 10

class A {
    void go(int n) throws Exception {
        if (n < 10) {
            throw new Exception();
        }
        System.out.println(n);
    }
}
public class Test {
    public static void main(String[] args) {
        try {
            A a = new A();
            a.go(5);
        } catch (Exception ex) {
            System.out.println("catch");
        }
    }
}

เอาท์พุทคือ catch

เมธอดสามารถโยน exception ได้มากกว่าหนึ่งชนิด (ดูบรรทัดที่ 5)

import java.io.*;
import java.sql.*;

class A {
    void go(int n) throws IOException, SQLException {
        switch (n) {
            case 0:
                System.out.println();
                break;
            case 1:
                throw new IOException();
            case 2:
                throw new SQLException();
            default:
                throw new IllegalArgumentException();
        }
    }
}
public class Test {
    public static void main(String[] args) {
        for (int i = 0; i <= 3; i++) {
            try {
                System.out.print(i);
                A a = new A();
                a.go(i);
            } catch (IOException ex) {
                System.out.println(" catch io exception");
            } catch (SQLException ex) {
                System.out.println(" catch sql exception");
            } catch (Exception ex) {
                System.out.println(" catch exception");
            }
        }
    }
}

เอาท์พุทคือ

0
1 catch io exception
2 catch sql exception
3 catch exception

สาเหตุที่ไม่ต้องประกาศว่าจะ throws IllegalArgumentException ก็เพราะว่า IllegalArgumentException เป็นลูกหลานของ RuntimeException ไม่จำเป็นต้องใส่ไว้ใน try catch ก็ได้

เขียนโปรแกรม Java เบื้องต้น

หนังสือ Java Keywords

หากจะนำข้อความไปใช้ ต้องแสดงที่มา และห้ามใช้ในเชิงพาณิชย์

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s