JavaRush /Java Blog /Random-KO /Java ์˜ˆ์™ธ์— ๊ด€ํ•œ 10๊ฐ€์ง€ ์งˆ๋ฌธ
raynn
๋ ˆ๋ฒจ 31
ะะธะถะฝะธะน ะะพะฒะณะพั€ะพะด

Java ์˜ˆ์™ธ์— ๊ด€ํ•œ 10๊ฐ€์ง€ ์งˆ๋ฌธ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Java์˜ ์˜ˆ์™ธ์— ๊ด€ํ•ด ๊ฐ€์žฅ ์ž์ฃผ ๋ฌป๋Š” 10๊ฐ€์ง€ ์งˆ๋ฌธ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Java์˜ ์˜ˆ์™ธ์— ๊ด€ํ•œ ์ƒ์œ„ 10๊ฐ€์ง€ ์งˆ๋ฌธ - 1

1. ๊ฒ€์ฆ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๊ณผ ๊ฒ€์ฆ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ

์ฆ‰, ํ™•์ธ๋œ ์˜ˆ์™ธ๋Š” ๋ฉ”์„œ๋“œ ๋ณธ๋ฌธ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ํฌ์ฐฉ๋˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ์˜ throws ์„น์…˜์—์„œ ์„ ์–ธ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๋Š” 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ, ๋„ ํฌ์ธํ„ฐ ๋“ฑ๊ณผ ๊ฐ™์ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธ๋œ ์˜ˆ์™ธ๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, IOException์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ™•์ธ ์˜ˆ์™ธ์ธ ๋ฐ˜๋ฉด RuntimeException์€ ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. ๋” ์ฝ๊ธฐ ์ „์— Java์˜ ๊ณ„์ธต์  ์˜ˆ์™ธ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ™•์ธํ•˜์„ธ์š” .

2. ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•

์˜ˆ์™ธ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ด๋ฅผ ํฌ์ฐฉํ•ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3. try์— ์ •์˜๋œ ๋ณ€์ˆ˜๋ฅผ catch๋‚˜ finally์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‹ค์Œ ์ฝ”๋“œ ๋ถ€๋ถ„์—์„œ try ๋ธ”๋ก์— ์„ ์–ธ๋œ s ์ค„์€ catch ๋ธ”๋ก์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
try {
	File file = new File("path");
	FileInputStream fis = new FileInputStream(file);
	String s = "inside";
} catch (FileNotFoundException e) {
	e.printStackTrace();
	System.out.println(s);
}
๊ทธ ์ด์œ ๋Š” try ๋ธ”๋ก์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ฒด๊ฐ€ ์„ ์–ธ๋˜๊ธฐ ์ „์— ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์ด ์˜ˆ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

4. Double.parseDouble(null)๊ณผ Integer.parseInt(null)์ด ์„œ๋กœ ๋‹ค๋ฅธ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‹ค๋ฅธ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ JDK ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์€ ๋‹จ์ˆœํžˆ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์— ์˜ํ•ด ๋””์ž์ธ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋„ˆ๋ฌด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
Integer.parseInt(null);
// ะฒั‹ะทั‹ะฒะฐะตั‚ java.lang.NumberFormatException: null

Double.parseDouble(null);
// ะฒั‹ะทั‹ะฒะฐะตั‚ java.lang.NullPointerException

5. Java์˜ ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ

๋‹ค์Œ์€ ๊ทธ ์ค‘ ๋ช‡ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
IllegalArgumentException
ArrayIndexOutOfBoundsException
๋‹ค์Œ๊ณผ ๊ฐ™์ด ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š์„ ๋•Œ if ๋ฌธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
if (obj == null) {
   throw new IllegalArgumentException("obj ะฝะต ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ั€ะฐะฒะฝะพ null");

6. ํ•˜๋‚˜์˜ catch ๋ธ”๋ก์—์„œ ์—ฌ๋Ÿฌ ์˜ˆ์™ธ๋ฅผ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋Œ€๋‹ต์€ '์˜ˆ'์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ์˜ ํด๋ž˜์Šค๋ฅผ ํด๋ž˜์Šค ์ƒ์† ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ๋™์ผํ•œ ์Šˆํผํด๋ž˜์Šค๋กœ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ํ•ด๋‹น ์Šˆํผํด๋ž˜์Šค๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7. ์ƒ์„ฑ์ž๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‚˜์š”?

๋Œ€๋‹ต์€ '์˜ˆ'์ž…๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋Š” ๋‹จ์ง€ ํŠน๋ณ„ํ•œ ์ข…๋ฅ˜์˜ ๋ฉ”์†Œ๋“œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ฝ”๋“œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค .

8. ๋งˆ์ง€๋ง‰ ๋ธ”๋ก์—์„œ ์˜ˆ์™ธ ๋˜์ง€๊ธฐ

์›์น™์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ฉ๋ฒ•์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
public static void main(String[] args) {
	File file1 = new File("path1");
	File file2 = new File("path2");
	try {

		FileInputStream fis = new FileInputStream(file1);
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} finally {
		try {
			FileInputStream fis = new FileInputStream(file2);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}
try-catch๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ์ค‘์ฒฉ๋œ ๋ธ”๋ก์„ ์ƒˆ ๋ฉ”์„œ๋“œ๋กœ ์„ ์–ธํ•˜๊ณ  ์ด ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ํ˜ธ์ถœ์„ ๋ธ”๋ก์— ์‚ฝ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค finally.
public static void main(String[] args) {
	File file1 = new File("path1");
	File file2 = new File("path2");
	try {

		FileInputStream fis = new FileInputStream(file1);
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} finally {
		methodThrowException();
	}
}

9. finally ๋ธ”๋ก์—์„œ return์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๊ทธ๋ž˜ ๋„Œ ํ• ์ˆ˜์žˆ์–ด.

10. ๊ฐœ๋ฐœ์ž๋Š” ์™œ ์˜ˆ์™ธ๋ฅผ ์กฐ์šฉํžˆ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋Ÿฌํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์ด ์ž์ฃผ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ทธํ† ๋ก ์ค‘์š”ํ•˜๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ์™œ ๊ณ„์†ํ•ด์„œ ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๊นŒ?
try {
     ...
} catch(Exception e) {
     e.printStackTrace();
}
๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์ž์ฃผ ํ–‰ํ•ด์ง„๋‹ค๊ณ  ํ•ด์„œ ๊ทธ๊ฒƒ์ด ์˜ณ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ:
  1. Java์˜ ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ
  2. Java์˜ ๊ณ„์ธต์  ์˜ˆ์™ธ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ
  3. stackoverflow์˜ ์˜ˆ์™ธ์— ๋Œ€ํ•œ ์งˆ๋ฌธ
์›๋ณธ ๊ธฐ์‚ฌ
๊ทธ ๋ฐ–์— ์ฝ์„ ๋‚ด์šฉ:

์ž๋ฐ”์˜ ์˜ˆ์™ธ

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION