Page 1 of 3 123 LastLast
Results 1 to 10 of 26

Thread: try กับ catch คืออะไร.... ใช้กันตอนไหน???

  1. #1
    Junior Member
    Join Date
    Jun 2009
    Posts
    3


    try กับ catch คืออะไร.... ใช้กันตอนไหน???

    [hide=1]คําสั่ง try กับ catch นั้น เป็นคําสั่งที่เราจะเจอกันบ่อยเมื่อมาเขียน Java อ้าว... แล้วภาษาอื่นล่ะ ภาษาอื่นมันก็มี แต่อาจจะไม่ได้หยิบใช้บ่อยเหมือนกับ Java เพราะว่า Java มันมีมาพร้อมกับการเริ่มต้นเขียนของมัน คือ สมัยก่อน เราเขียน C, C++ กัน เขียน VB กัน เราก็ยังไม่เห็นการใช้ try กับ catch มากนัก อันนี้เกริ่นให้ฟังก่อน เพื่อให้เข้าใจว่ามันเป็นมาอย่างไร ถึงได้บอกว่าการใช้ try กับ catch นั้นเรามาเจอบ่อยเมื่อเข้าสู่การเรียน Java แต่ทําไมภาษาอื่นไม่ค่อยได้หยิบใช้.... ก่อนหน้าเราเล่นกันแต่ C/C++ หรือภาษาอื่นๆ Java ออกมาทีหลัง และอาจจะเป็นการนําเอาจุดบกพร่องของภาษารุ่นก่อนๆ มาปรับปรุงให้เป็นภาษาที่แกร่งขึ้น

    เรื่องนี้ต้องดูกันให้ดีๆ เรื่อง try กับ catch เนี่ย... มันเป็นคําสั่งที่จะใช้ในการจับ Error มันไม่เหมือนกับ if นะครับ คือ ในภาษา Java มันจะมีการรายงานผลของข้อผิดพลาดในเวลาโปรแกรมทํางาน คือ เมื่อเราเรียกโปรแกรม java.exe และสั่งรันไฟล์ .class แน่นอน โอกาสที่จะเกิด Error ในตอนที่กําลังรันนั้นมันมีแน่ บางครั้งก็เกิดปัญหาในเวลาเราใส่ค่าไม่ถูกต้อง นั่นล่ะ โปรแกรมจะเกิดบั๊กและหยุดการทํางานเอาดื้อๆ ได้เหมือนกัน... ดังนั้น ใน Java จึงมีการสร้างกระบวนการตรวจจับ หรือดักจับข้อผิดพลาด คือ ถ้าเราดักจับข้อผิดพลาดที่คิดว่ามีโอกาสเกิดได้แล้วล่ะก็ เวลาเรารันโปรแกรมแล้วมันเกิดขึ้นจริงๆ โปรแกรมก็จะทํางานต่อไปได้ถูกมั้ยครับ... แต่ลองนึกสิครับ เวลาเรารันโปรแกรม มันก็ทํางานไปเรื่อยๆ แต่ถ้าหากมีจุดใดจุดหนึ่งรับข้อมูลเข้ามา แล้วข้อมูลนั้นมันมีปัญหา เช่น เอาไปคํานวณไม่ได้ นั่นล่ะ มันจะทําให้เกิด Error ในตอนรัน ซึ่งเป็นอะไรที่ร้ายแรงเอาเรื่องเหมือนกัน...

    อย่างภาษาอื่นๆ เราจะตรวจจับว่าฟังก์ชั่นนี้ หรือฟังก์ชั่นนั้นมันทํางานได้ถูกต้องหรือไม่ เราก็จะดูจากค่า return ถูกมั้ยครับ เช่น ฟังก์ชั่น convert นี้

    [code]int convert( int num )
    {

  2. #2
    Junior Member
    Join Date
    Feb 2008
    Posts
    15


    ขอเพิ่มให้อีกหน่อย
    เพิ่มเติมสำหรับคนที่อ่านข้างบนจบแล้ว (ยกความดีให้ กระทู้นี้ละกัน )
    Exception เนี่ยมันก็เป็น Class นึงเหมือนกัน
    ไม่จำเป็นต้องเป็น Java หรอก ภาษาที่เป็น OOP ภาษาไหนๆ ก็ได้ใช้พอๆกัน ขึ้นอยู่กับคนเขียนโปรแกรมด้วยว่าใส่ใจรึเปล่า
    try ... catch จะทำงานก็ต้องเมื่อคำสั่งที่อยู่ภายใน try มีการ throw Exception ขึ้นมา
    ลองพิมพ์ดูเล่นๆ ก็ได้
    try
    {
    throw new Exception("Test");
    }
    catch(Exception ex)
    {
    System.out.println(ex.getMessage());
    }
    ปล. ผมไม่ได้เขียน java มานานแล้ว มี syntax error บ้างก็ขออภัย :P

    ต่อๆ
    ในเมื่อ Exception มันเป็น class แปลว่าเราสามารถ inherit มันได้ (ใน java ใช้ keyword ว่า extends)
    ทำให้เกิด Exception ขึ้นมาหลายแบบ เพราะงั้นใน catch จึงต้องสามารถดัก exception หลายๆแบบได้
    try
    {
    ...ในนี้อาจเกิด ExceptionA และ ExceptionB
    }
    catch(ExceptionA e1)
    {
    แสดงข้อความ error1
    }
    catch(ExceptionB e2)
    {
    แสดงข้อความ error2
    }
    ศาสตร์ด้านการออกแบบ Class เนี่ยน่าสนใจมาก แค่เรื่องนี้ มีประเด็นให้คิด ให้ลองอีกมากมาย
    ทั้งกระทู้นี้และ reply นี้ เป็นแค่เศษเล็กๆเท่านั้น เอาไว้ว่างๆจะเขียนเต็มๆ มาให้ลองอ่านกัน
    มีคนโม้ว่าเขียนโปรแกรม publish ออกไปแล้ว ยังไม่เกิด error เลย เพราะเรื่อง exception handling นี่แหละ
    แต่ผมไม่ค่อยเชื่อแฮะ ฮ่าๆๆ

  3. #3


    มีคนโม้ว่าเขียนโปรแกรม publish ออกไปแล้ว ยังไม่เกิด error เลย เพราะเรื่อง exception handling นี่แหละ [/b]
    อันนี้เป็นไปได้ครับ ถ้ามีการออกแบบ exception handling ในระดับ Framework ของโปรแกรมเลย แต่ถามจริงเหอะ จะมีซักกี่คนที่ทำแบบนั้น

    ปล. exception handling เนี่ย ไม่ต้อง oop หรอกครับ ภาษา assembly ผมยังเห็นใช้กันบ่อยออก

  4. #4
    Junior Member
    Join Date
    Jun 2009
    Posts
    3


    เอ่อ พี่ครับ ผมขอถามต่อ ได้มั้ยครับ คือผมคือเห็น บางครั้งมีการใช้ finally เข้ามาเกี่ยวข้องด้วย อันนี้คือที่ผมเข้าใจ คือมันจะทำงานในตอนสุดท้ายใช่ป่ะครับ ? อีกอย่างคือ มันจะอ่านโค้ดที่เราเขียนไปจากตรงไหนก่อน แล้วไปจบที่ตรงไหนหรอครับ ถ้าถามผิดประเด็นก็ขอโทษไว้ก่อนด้วยน่ะครับ พอดีเพิ่งหัดลองใช้คำสั่งนี้ครับ ขอบคุณครับ

  5. #5
    Junior Member
    Join Date
    Feb 2008
    Posts
    15


    กรณีไม่เกิด exception
    try > finally

    กรณีที่เกิด exception ใน try
    try > catch > finally

    คือถ้ามี finally ยังไงมันก็จะไปเข้า finally
    ถึงแม้จะ return ใน try หรือ catch มันก็ยังเข้า finally เป็นที่สุดท้ายอยู่ดี

    ปล.ใน catch และ finally ก็สามารถเกิด exception ขึ้นมาได้อีก ต้องระวังด้วย ถ้าเสี่ยงก็ดักใน catch และ finally ด้วย

  6. #6
    Junior Member
    Join Date
    Mar 2008
    Posts
    11


    ส่วนตัวผมคิดว่า คำสั่ง try catch เป็นคำสั่งที่สุดยอดมากที่สุดแล้วอ่ะคับ ถ้าเทียบกับ จอมยุทธ์ try catch ก็เปรียบได้เหมือนกับกระบี่
    ถ้าจอมยุทธ์ขาดกระบี่ไป ก็ไม่ต่างไรจากคนธรรมดา ใครที่ยังไม่เคยใช้ try catch ผมแนะนำเลยนะคับ ใช้ไปเหอะ ใช้ให้เป็นนิสัย ไม่รู้จะพิมพ์อะไร บอก try catch
    ====================================================================

    ความรู้ไม่ได้อยู่ที่ห้องเรียน มันอยู่รอบๆตัวคุณทั้ง ลม น้ำ อากาศและเพื่อนของคุณ

    มาแบ่งปันความรู้กัน

    ====================================================================

  7. #7
    Junior Member
    Join Date
    Sep 2009
    Location
    Bangkok
    Posts
    11


    Try , Catch , Exception

    นี่แหละสุดยอดการดัก Error ผมคิดว่า ถ้าจะดักให้โปรแกรมทั้งโปรแกรม

    มันก็จะเป็นโปรแกรมที่ Error น้อยที่สุดแต่มันก็อาจจะมีผิดพลาดได้ในบางจุด

    ลองศึกษาดูนะครับ

  8. #8
    Junior Member
    Join Date
    Sep 2008
    Posts
    8


    ขอเพิ่มเติมนิดนึง

    ถ้าเกิดเราไม่มั่นใจว่า error ที่เกิดขึ้นเกิดมาจากสาเหตุอะไร ก็ควรที่จะใส่มันไว้ทีหลังจะได้หาสาเหตุได้ง่าย อีกอย่างถ้าเกิดโค้ดเรามันเชื่อมต่อกันมากก้อควรที่จะใส่ try catch ไว้หลังสุดหลังจากที่เขียนโปรแกรมเส็ดแล้ว หรือเปล่าครับ

  9. #9
    Junior Member
    Join Date
    Sep 2009
    Posts
    14


    เวลาเขียนโปรแกรมผมมักจะใช้ if else ตลอด

    โดยที่ไม่รู้ความแตกต่างระหว่าง try catch กับ if else มาก่อน

    แล้วปัญหาที่เกิดบ่อยครั้งมันจะฟ้อง error

    มันอาจเป็นเพราะ ผมไม่เข้าใจ method ของ class ที่ import มา อย่างแท้จริงก็ได้

    หรือไม่ก็ยังไม่เข้าใจ try catch อย่างถ่องแท้เสียที


    สิ่งที่ได้จากกระทู้นี้
    • เห็นความแตกต่างระหว่าง if else กับ try catch finally (ซึ่งมันแตกต่างกันอยู่แล้ว แต่ผมดันโง่ไม่รู้เรื่องเอง)
    • จะได้ไม่ได้ใช้ if else กับเงื่อนไขมั่ว ๆ เพื่อกัน error แต่ใช้ try catch คงสะดวกกว่าในบ้างครั้ง
    • เข้าใจว่า try catch หลักๆ ว่าเป็นตัวดักจับ error

    **หากผมเข้าใจผิดอะไรตรงไหนก็เตือนด้วยนะครับ**

  10. #10
    Junior Member
    Join Date
    Oct 2009
    Posts
    4


    เราก้อเคยใช้นะ แต่ก้อไม่เข้าใจว่ามันต่างกับการใช้ else if ตรงไหน
    Attached Images Attached Images

Page 1 of 3 123 LastLast

Similar Threads

  1. The FBI uses to catch pedophiles consoles sony play station
    By newsbot in forum World Hacking/Security News
    Replies: 4
    Last Post: 13-12-2009, 09:35 AM
  2. How Hidden Cameras Can Catch Crooks at Home
    By newsbot in forum World Hacking/Security News
    Replies: 0
    Last Post: 29-08-2009, 09:05 PM
  3. Using eBay to Catch a Truck Thief
    By newsbot in forum World Hacking/Security News
    Replies: 0
    Last Post: 26-12-2007, 09:59 PM
  4. IBM AS/400 คืออะไร
    By Anonymous in forum Operating System, Server and Networking
    Replies: 1
    Last Post: 12-07-2005, 05:10 AM
  5. สอน try catch exception
    By asylu3 in forum Java
    Replies: 0
    Last Post: 18-09-2003, 04:46 PM

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •