Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีการโยนข้อยกเว้นใน Java

ข้อยกเว้นคือเหตุการณ์ที่ไม่คาดคิดซึ่งเกิดขึ้นระหว่างการทำงานของโปรแกรม เมื่อโค้ดของคุณมีข้อยกเว้น โฟลว์ของโปรแกรมของคุณจะถูกยกเลิก

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

นั่นคือที่มาของคีย์เวิร์ด throw and throws คีย์เวิร์ด throw and throws ของ Java ใช้เพื่อจัดการกับข้อยกเว้นใน Java บทช่วยสอนนี้จะกล่าวถึงวิธีใช้คำหลักเหล่านี้ใน Java โดยมีการอ้างอิงถึงตัวอย่าง

ข้อยกเว้น Java

ใน Java มีสองเหตุการณ์ที่สามารถส่งผลกระทบต่อการไหลของโปรแกรมของคุณ:ข้อผิดพลาดและข้อยกเว้น

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

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

เหตุผลบางประการที่เกิดข้อยกเว้น ได้แก่:

  • ข้อผิดพลาดในรหัสของคุณ
  • การเปิดไฟล์ที่ไม่มีอยู่จริง
  • ข้อมูลผู้ใช้ไม่ถูกต้อง
  • สูญเสียการเชื่อมต่อเครือข่าย

มีข้อยกเว้นสองประเภทที่คุณควรรู้ก่อนเริ่มจัดการข้อยกเว้น:

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

  • มีการตรวจสอบข้อยกเว้นที่ไม่ได้ตรวจสอบในขณะใช้งาน ซึ่งรวมถึง ArithmeticException และ ArrayIndexOutOfBoundsException .
  • ตรวจสอบข้อยกเว้นที่ตรวจสอบในเวลาคอมไพล์ และรวม IOException และ InterruptedException .

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

Java โยนคำสำคัญ

Java throws คีย์เวิร์ดใช้เพื่อประกาศประเภทของข้อยกเว้นที่อาจเกิดขึ้นในกลุ่มโค้ด นี่คือไวยากรณ์สำหรับส่วนคำสั่ง throws:

accessModifier return functionName() throws Exception1, Exception2 {
   // Run code
  }

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

นี่คือรหัสที่เราจะใช้ตรวจสอบอายุของลูกค้าและโยนข้อยกเว้น ArithmeticException หากลูกค้าอายุต่ำกว่า 16 ปี:

class Main {
	public static void verifyAge(int age) throws ArithmeticException {
		if (age < 16) {
			throw new ArithmeticException("This customer is not old enough to see the movie.");
		} else {
			System.out.println("This customer is old enough to see the movie.");
		}
	}

	public static void main(String[] args) {
		verifyAge(14);
	}
}

รหัสของเราส่งคืน:

ข้อยกเว้นในเธรด “main” java.lang.ArithmeticException:This customer is not old enough to see the movie.

    at Main.verifyAge(Main.java:4)

    at Main.main(Main.java:11)

เมื่อเราเรียกใช้โปรแกรมนี้ พารามิเตอร์ age ที่เราระบุในโปรแกรมหลักของเราจะถูกตั้งค่าเป็น 14 ซึ่งน้อยกว่า 16 ดังนั้นเมื่อ verifyAge() วิธีดำเนินการคำสั่ง age < 16 ประเมินว่าเป็นจริง และมีการโยน ArithmeticException

คีย์เวิร์ด throws ใช้เพื่อกำหนดประเภทของข้อยกเว้นที่จะถูกส่งคืนโดย verifyAge() กระบวนการ. คีย์เวิร์ด throw ใช้เพื่อโยนข้อยกเว้นในโปรแกรมของเรา

Java Throw คำสำคัญ

คีย์เวิร์ดโยน Java ใช้เพื่อโยนข้อยกเว้นเดียวในโค้ดของคุณ คีย์เวิร์ด throw ตามด้วยอ็อบเจ็กต์ที่จะส่งในโปรแกรม หากพบข้อยกเว้น

นี่คือไวยากรณ์สำหรับคำหลัก Java throw:

throw throwObject;

มาดูตัวอย่างการใช้คำสั่ง throw เพื่อจัดการกับข้อยกเว้นใน Java

โยนข้อยกเว้นที่ตรวจสอบแล้ว

สมมติว่าเราต้องการให้ข้อความปรากฏว่า "ไม่มีไฟล์นี้" เมื่อ IOException จะพบในโปรแกรมของเรา IOExceptions ได้รับการตรวจสอบข้อยกเว้น ดังนั้นเราจึงควรจัดการกับพวกเขาโดยใช้คำหลัก "โยน" นี่คือรหัสที่เราจะใช้เพื่อจัดการกับข้อยกเว้น:

import java.io.*;

class Main
	public static void getFile() throws IOException {
		throw new IOException("This file does not exist.");
	}
	
	public static void main(String[] args) {
		try {
			getFile();
		} catch (IOException error) {
			System.out.println(e.getMessage());
		}
	}
}

รหัสของเราส่งคืน:

This file does not exist.

มาทำลายรหัสของเรากัน ขั้นแรก เรานำเข้า java.io ห้องสมุดที่เราจะใช้ในโปรแกรมใด ๆ ที่จัดการไฟล์ จากนั้นเราสร้างคลาสที่เรียกว่า Main ซึ่งเก็บรหัสสำหรับโปรแกรมของเรา

ใน Main . ของเรา คลาส เรากำหนดฟังก์ชันที่เรียกว่า getFile() ซึ่งส่ง IOException . ฟังก์ชันนี้จะโยน IOException พร้อมกับข้อความว่า "ไม่มีไฟล์นี้" สู่โปรแกรมของเรา

ในฟังก์ชันหลักในคลาสหลักของเรา เราสร้างบล็อก try/catch ที่พยายามเรียกใช้ getFile() กระบวนการ. หากพบ IOException โค้ดภายในบล็อก catch จะทำงาน และข้อความจาก IOException จะถูกพิมพ์ไปยังคอนโซล ดังนั้นรหัสของเราจึงกลับมา "ไม่มีไฟล์นี้" ซึ่งเป็นข้อความที่เราประกาศไว้ก่อนหน้านี้

โยนข้อยกเว้นที่ไม่ได้ตรวจสอบ

สมมติว่าเราต้องการโยน StringIndexOutOfBounds ข้อยกเว้นหากโปรแกรมของเราพยายามเข้าถึงค่าดัชนีในสตริงที่ไม่มีอยู่ เราสามารถทำได้โดยใช้รหัสนี้:

class Main {
	public static void outOfBounds() {
		throw new StringIndexOutOfBoundsException("This index value is invalid.");
	}

	public static void main(String[] args) {
		outOfBounds();
	}
}

มีหลายอย่างเกิดขึ้นในโค้ดของเรา เรามาทำลายมันกันเถอะ ขั้นแรก เราได้ประกาศคลาสที่เรียกว่า Main ซึ่งมีโค้ดของเราสำหรับโปรแกรมนี้อยู่

จากนั้นเราได้สร้างฟังก์ชันที่เรียกว่า outOfBounds() ซึ่งเมื่อดำเนินการจะส่ง StringIndexOutOfBounds ข้อยกเว้น ข้อความ This index value is invalid. จะมาพร้อมกับข้อยกเว้น สุดท้าย ในโปรแกรมหลักของเรา เราเรียก outOfBounds() ฟังก์ชันซึ่งจะส่งคืน:

ข้อยกเว้นในเธรด “main” java.lang.StringIndexOutOfBoundsException:ค่าดัชนีนี้ไม่ถูกต้อง

    at Main.outOfBounds(Main.java:3)

    at Main.main(Main.java:7)

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

บทสรุป

การจัดการข้อยกเว้นที่ตรวจสอบแล้วเป็นส่วนสำคัญในการเขียนโค้ดที่บำรุงรักษาได้ใน Java ใน Java คีย์เวิร์ด throw and throws ใช้เพื่อโยนและจัดการกับข้อยกเว้น

บทช่วยสอนนี้ครอบคลุมถึงวิธีใช้คีย์เวิร์ด throw และ throws ใน Java และให้ตัวอย่างที่เกี่ยวข้องเพื่อช่วยให้คุณเรียนรู้กระบวนการ หลังจากอ่านบทช่วยสอนนี้ คุณก็พร้อมที่จะเริ่มโยนและจัดการกับข้อยกเว้นใน Java อย่างมืออาชีพ!