Page cover

How to use Multiple Catch Clause

วริศรา ป้ายงูเหลือม 650710840

วัตถุประสงค์หลักของบล็อก catch คือการจัดการข้อผิดพลาด (Exception) ที่เกิดขึ้นในบล็อก try บล็อกนี้จะถูกดำเนินการก็ต่อมีเมื่อข้อผิดพลาด เกิดขึ้นในโปรแกรมเท่านั้น

การใช้บล็อค Multiple Catch Clause

จะนํา catch มาต่อกันไปเหมือนแยกส่วนเป็นชั้น ๆ ไปเรื่อยๆ

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

- Multiple Catch Clause ในภาษาต่างๆ

C#

ตัวอย่าง

บล็อก try จะสร้างเหตุการณ์ผิดปรกติ ดังนั้นเราจะใช้บล็อก catch สามประเภทที่แตกต่างกันเพื่อจัดการข้อผิดพลาดที่เกิดจากบล็อก try

  • บล็อก catch 1 จะจัดการIndexOutOfRangeException

  • บล็อก catch 2 จะจัดการFormatException

  • บล็อก catch 3 จะจัดการOverflowException

using System; 
class GFG { 
	// Main method 
	static void Main() 
	{ 
		// This block raises an exception 
		try { 

			byte data = byte.Parse("a"); 
			Console.WriteLine(data); 
		} 
		// Catch block 1 
		catch (IndexOutOfRangeException) { 
			Console.WriteLine("At least provide one Argument!"); 
		} 
		// Catch block 2 
		catch (FormatException) { 
			Console.WriteLine("Entered value in not a number!"); 
		} 

		// Catch block 3 
		catch (OverflowException) { 
			Console.WriteLine("Data is out of Range!"); 
		} 
	} 
}

Java

ตัวอย่าง

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

Python

ใน ภาษา Python จริง ๆ คือการใช้บล็อค try และ exceptไม่ใช่ catch เหมือนในภาษาอื่น ๆ เช่น Java หรือ C#

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

ตัวอย่าง

การเข้าถึงอินเดกซ์ของลิสต์ที่ไม่มีอยู่จริง

C

ภาษา C ไม่มีฟีเจอร์ try-catch แบบเดียวกับบางภาษา เช่น Java หรือ C# แต่เราสามารถจัดการกับข้อผิดพลาดได้โดยการตรวจสอบค่าที่คืนมาจากฟังก์ชันและใช้กลไกควบคุมภายในโปรแกรม เช่น if-else หรือ switch-case ในการทำงานคล้ายกับ try-catch

ตัวอย่าง

จัดการกับข้อผิดพลาดโดยการตรวจสอบค่า divisor ก่อนการทำการหาร หากเป็นศูนย์ เราจะแสดงข้อความผิดพลาดและออกจากโปรแกรมทันที นี่คือการใช้ if-else ในการจำลอง try-catch

C#
Java
Python
C

ใช้catchต่อกัน ไปเรื่อยๆ

ใช้catchต่อกันไปเรื่อยๆ

ใช้บล็อคtry และexcept

ไม่มีฟีเจอร์

try-catch ใช้ if-else หรือ

switch-case

Slide Presentation

Video Presentation

แหล่งอ้างอิง

C#

Java

Python

C

Last updated