สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

ฟรี TUTORIAL JAVA

ฟรีtutorial JAVA 01 install Eclipse ฟรีtutorial JAVA 02 intro to programming Eclipse ฟรีtutorial JAVA 03 condiotion ฟรีtutorial JAVA 04.loop ฟรีtutorial JAVA 05.array ฟรีtutorial JAVA 05 2 array cont ฟรีtutorial JAVA 06 01 function ฟรีtutorial JAVA 06 02 function cont ฟรีtutorial JAVA 07 object ฟรีtutorial JAVA 08 string ฟรีtutorial JAVA 09 constructor ฟรีtutorial JAVA 10 01 oop ฟรีtutorial JAVA 10 02 oop2 ฟรีtutorial JAVA 11 exception ฟรีtutorial JAVA 12 reading file ฟรีtutorial JAVA 13 thread ฟรีtutorial JAVA 14 generic ฟรีtutorial JAVA 15 01 GUI ฟรีtutorial JAVA 15 02 GUI2 ฟรีtutorial JAVA 15 03.GUI3 ฟรีtutorial JAVA 16 using WindowBuilder ฟรีtutorial JAVA 17 event ฟรีtutorial JAVA 18 database management system ฟรีtutorial JAVA 19 ER diagram ฟรีtutorial JAVA 20 Relational ฟรีtutorial JAVA 21 Xampp ฟรีtutorial JAVA 22 JDBC ฟรีtutorial JAVA 23 MVC ฟรีtutorial JAVA 24 SQL ฟรีtutorial JAVA
ขอย้ำอีกครั้งว่าเนื้อหาที่เห็นอยู่นี้ไม่ใช่เนื้อหาตามปกติที่เราสอนในห้องเรียนเป็นแค่ tutorial ไว้อ่านประกอบเฉยๆ แทบไม่เกี่ยวกันเลย และไม่เกี่ยวกับการบ้านที่ทำครับ ในห้องเรียนเนื้อหาจะเยอะกว่านี้ค่อนข้างมากครับ
ขอบคุณน้องตี้ อย่างสูงสำหรับ Tutorial ดีๆ

ฟรี TUTORIAL DATA STRUCTURE

DATA STRUCTURE

ฟรีtutorial : DATA STRUCTURE : 01 1การเรียงลำดับ(Sorting) ฟรีtutorial : DATA STRUCTURE : 01 2 การเรียงลำดับ2 ฟรีtutorial : DATA STRUCTURE : 02 อาร์เรย์ลิสต์ (Array List) ฟรีtutorial : DATA STRUCTURE : 03 ลิงค์ลิสต์ (Linked List) ฟรีtutorial : DATA STRUCTURE : 04 สแต๊ค ฟรีtutorial : DATA STRUCTURE : 05 1 คิวและไพออริตี้คิว ฟรีtutorial : DATA STRUCTURE : 05 2 คิวและไพออริตี้คิว ฟรีtutorial : DATA STRUCTURE : 06 1 ไบนารีทรี ฟรีtutorial : DATA STRUCTURE : 06 2 ไบนารีเสิร์ชทรี ฟรีtutorial : DATA STRUCTURE : 06 3 ไบนารีเสิร์ชทรี ฟรีtutorial : DATA STRUCTURE : 08 แฮช ฟรีtutorial : DATA STRUCTURE : 09 กราฟ ฟรีtutorial : DATA STRUCTURE :
ขอย้ำอีกครั้งว่าเนื้อหาที่เห็นอยู่นี้ไม่ใช่เนื้อหาตามปกติที่เราสอนในห้องเรียนเป็นแค่ tutorial ไว้อ่านประกอบเฉยๆ แทบไม่เกี่ยวกันเลย และไม่เกี่ยวกับการบ้านที่ทำครับ ในห้องเรียนเนื้อหาจะเยอะกว่านี้ค่อนข้างมากครับ
ขอบคุณน้องตี้ อย่างสูงสำหรับ Tutorial ดีๆ

                                                             

ความผิดปกติ(Exeption)

            ในบทก่อนๆจะเห็นว่าเวลาเขียนโปรแกรมแล้วรันไม่ผ่านตรง console จะขึ้นข้อความสีแดง หรือไม่อย่างนั้นก็อาจจะรันผ่านแต่กลับไม่มีอะไรแสดงออกมา เรื่องพวกนี้เป็นเรื่องที่เกิดจากความผิดปกติหรือ exception ที่ทำให้โปรแกรมไม่สามารถทำงานจบได้ตามที่เราต้องการ

Error กับ Exception

            Throwable (เปิด java doc ดูประกอบ) เป็นคลาสๆหนึ่งที่มีลูกอยู่ 2 คลาสคือ error กับ exception

            สำหรับ error

เป็นความผิดปกตินอกโปรแกรม หมายความว่าเขียนถูกแล้วแต่อาจจะเกิดปัญหาจากความผิดพลาดจากการรับส่งข้อมูลจากไฟล์ แบบอ่านไฟล์ไม่ได้ เป็นต้น

-          IOError อุปกรณ์รับส่งข้อมูลทำงานไม่ได้

-          NoClassDefFoundError คือเรียกคลาสแต่จริงๆไม่มีคลาสนั้น

-          StackOverflowError คือ หน่วยความจำระหว่างเรียกเมท็อดไม่พอ นี่เป็คนความผิดพลาดจากการเขียนโปรแกรมของเราเอง เกิดจากการเรียก recursive ฟังก์ชันมากไป

สำหรับ exception

เป็นความผิดปกติที่มีสาเหตุอาจจะมาจากการเขียนโค๊ดผิด ความผิดปกติจะเกิดขึ้นตอนประมวลผล

โปรแกรมซึ่งการป้องกันความผิดปกติจะทำที่ตรงนี้ โปรแกรมจะได้ไม่ต้องหยุดทำงานทั้งๆที่ยังทำไม่จบ

-          AritmaticException การหารจำนวนเต็มด้วยศูนย์(ไม่นิยามในทางคณิตศาสตร์)

-          IndexOutOfBoundException เรียกใช้อาร์เรย์ช่องที่ไม่มี

-          NullPointerException การใช้ตัวแปรหรือเมท็อดที่เป็น null

-          FileNotFoundException  หาไฟล์ไม่เจอ

จะเห็นว่าสำหรับ exception เป็นอะไรที่แก้ไขได้ทันที เช่น หารเลขด้วยศูนย์พอมันผิดก็ไปแก้ให้เรียบร้อย โปรแกรมก็ทำงานต่อได้จนจบแล้ว

 


รูป 11-1

เขียนโปรแกรมขึ้นมา ให้ b เก็บค่าของ 5/a โดยที่ a มีค่าเป็น 0 โปรแกรมจะแสดงผลตามข้างล่าง

 


รูป 11-2

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

 

จับ exception ด้วย try-catch

วิธีการหนึ่งสำหรับการจัดการกับ exception ทำด้วยสิ่งที่เรียกว่า surround with try/catch โดย try/catch นั้นจะประกอบไปด้วยคำสั่ง 2 คำสั่งคือกลุ่ม try(ลอง) กับ กลุ่ม catch(จับ) ง่ายๆก็คือให้ลองทำสิ่งที่อยู่ใน try ดูก่อน หากไม่สามารถทำได้เพราะมี exception ให้จับexception ด้วยการจับไว้ด้วย catch

 


รูป11-3

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

สิ่งที่โปรแกรมฟ้อง หากใส่ข้อมูลผิดประเภท

 


รูป 11-4

สิ่งที่โปรแกรมฟ้องก็คือ InputMismatchException เพื่อแก้ปัญหานี้เราก็จับ InputMismatchExceptionใส่ไว้ใน catch ซะให้เรียบร้อย

 


รูป11-5

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

 


รูป 11-6

เพียงเท่านี้ปัญหาก็จะหมดไปโปรแกรมสามารถทำงานได้ปกติจบครบจบกระบวนความ

การโยนความผิดปกติด้วย throw – throws

ปกติถ้า main ไปเรียก เมท็อด A แล้ว A ก็ไปเรียกเมท็อด B แต่เมท็อด B ดันมี exception หาก B ไม่ได้ดักจับ exception เอาไว้ความผิดปกติก็จะไปหา A ถ้า A ยังไม่จับสุดท้ายก็จะไปที่ main และถ้า main ยังไม่ทำอะไรโปรแกรมก็จะไม่ทำงานในที่สุด การโยนความผิดปกติก็เพื่อให้เมท็อดนั้นทำงานได้ปกติโดยให้เมท็อดอื่นเป็นผู้จับความผิดปกตินี้เอง

วิธีที่ง่ายที่สุดก็คือไปประกาศที่หัวเมท็อดให้หมดเรื่องหมดราวไป ด้วยคีย์เวิร์ด throws  ตามด้วยชื่อของคลาสที่เกิด exception

 


รูป 11-7

บรรทัดที่ 19 : โยน exception ออกจากเมท็อด เพื่อให้ main ทำการจับความปิดปกตินี้

จะรู้ได้ยังไงว่าต้องใช้ exception อะไร

ก็เป็นธรรมดาที่ตอนแรกจะไม่รู้ว่าจะต้องใช้ exception อะไร แต่พอเห็น error สักพักก็จะพอเดาได้ว่าใช้ exception อะไรเพราะชื่อมันเหมือนๆกันกับที่เวลาเวลา error แสดงออกทาง console แต่ถ้ายังไม่รู้จะใช้อะไรจริงๆ ก็ใช้ Exception ไปก่อน เพราะทุกคลาสของ exception จะเป็นลูกมากจากคลาส Exception

 


รูป 11-8

แก้ไขโค๊ดจากข้างบน 11-1โดยให้มีการดักจับ(try-catch) ความผิดปกติโดย Exception ก็จะแก้ไขได้ทุกความผิดปกติ แต่มันก็เป็นข้อเสียด้วยเหมือนกันคือพอผิดปกติมาทีเราก็จะไม่รู้ว่ามันผิดปกติเพราะอะไร

 


รูป 11-9

การใช้งานอ็อปเจ็คของสิ่งผิดปกติ

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

-          e.getMessage () ใช้แสดงความผิดปกติ เป็นสตริง

-          e.printStackTrace() ใช้บอกว่าผิดตริงไหน

-          e.toString() คืนค่าสตริงบรรยายสิ่งที่ปิด

 



แผนผังการเรียนเขียนโปรแกรม