📃 요약
자바는 웹 프로그램을 개발하는데 특화된 컴파일 언어이자 벡엔드 개발 전문 언어임. 플랫폼에 독립적이라서 어떤 운영체제(OS)에서도 실행이 가능하며 가상머신을 통해 실행됨
요소 기술 :
Basic : 자바
📃 기술 구현
스펙 :
intellij java
📃 예외처리
자바에서 에러는 예외라고 함, 예외(에러)가 발생했을 때 처리하는 방법을 제시함
1) 예외 처리 :
예외 처리 : 에러를 처리하는 방법을 말함
프로그램에서 예외가 발생했을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 것을 말함
대표적인 Null 포인터 예외 예제
NullApplication.javapublic class NullApplication {
public static void main(String[] args) {
String data = null;
// 변수 값이 null이면 속성이나 함수를 부를 수 없음
// 예외 : 널포인터입셉션
System.out.println(data.toString()); // 에러(=예외) 발생
}
}
2) try-catch-finally 블록 :
- 생성자 내부와 함수 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처릴를 할 수 있도록 해줌
- try : 실행문 감시
- catch : try 로 감싸진 코드에 에러가 발생하면 catch 블럭으로 강제 이동시킴, 에러메세지 출력 등의 작업을 함
- finally : 에러 발생 유무와 관계없이 마지막에 무조건으로 실행되는 블럭
CatchApplication.java
public class CatchApplication { public static void main(String[] args) { try { // 값이 없음 : 에러(예외) 발생 // 아래 라인이 실행되지 않고, catch 블럭 감 String data1 = args[0]; String data2 = args[1]; int value1 = Integer.parseInt(data1); // 값 없음 에러(예외) 발생 // NumberFormatException : 숫자로 바꿀수 없는 값을 강제 변환할경우 발생 int value2 = Integer.parseInt(data2); // 값 없음 에러(예외) 발생 int result = value1 + value2; System.out.println(data1 + " + " + data2 + " = " + result); } catch(Exception e) { System.out.println("실행 매개변수의 수가 부족합니다."); } finally { System.out.println("다시 실행하세요"); } } }
3) 다중 catch 블록 :
- catch 블록이 여러 개라 할지라도 단 하나의 catch 블록만 실행됨
- try : 실행문 감시
- catch : try 로 감싸진 코드에 에러가 발생하면 catch 블럭으로 강제 이동시킴, 에러메세지 출력 등의 작업을 함
catch 블럭은 여러개를 작성할 수 도 있음
- finally : 에러 발생 유무와 관계없이 마지막에 무조건으로 실행되는 블럭
CatchByCatchApplication.java
public class CatchByCatchApplication { public static void main(String[] args) { try { // 값이 없음 : 에러(예외) 발생 // 아래 라인이 실행되지 않고, catch 블럭 감 String data1 = args[0]; String data2 = args[1]; int value1 = Integer.parseInt(data1); // 값 없음 에러(예외) 발생 // NumberFormatException : 숫자로 바꿀수 없는 값을 강제 변환할경우 발생 int value2 = Integer.parseInt(data2); // 값 없음 에러(예외) 발생 int result = value1 + value2; System.out.println(data1 + " + " + data2 + " = " + result); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("실행 매개변수의 수가 부족합니다."); } catch(NumberFormatException e) { System.out.println("숫자로 변환할 수 없습니다."); } finally { System.out.println("다시 실행하세요"); } } }
4) throws 키워드 :
함수 선언부 끝에 작성되어 함수에서 처리하지 않은 예외를 함수를 호출한 곳에서 try/catch 구문을 사용해게끔 넘기는 역할
1) throws 키워드가 있는 클래스는 예외처리를 하지 않아도 됨
2) 그 함수를 호출하는 곳은 try/catch 구문을 사용해서 예외처리를 해야함
ThrowsApplication.java
public class ThrowsApplication { public static void main(String[] args) { // throws가 붙은 함수를 호출할 경우 반드시 예외처리 해야함 try { findClass(); } catch (ClassNotFoundException e) { System.out.println("클래스가 존재하지 않습니다."); } // findClass(); // 불가 } // 공유 함수 // throws : 함수의 끝에 붙는 키워드로 자신을 호출하는 쪽에서 try~catch 예외처리를 하라고 떠넘기기 public static void findClass() throws ClassNotFoundException { Class clazz = Class.forName("java.lang.String2"); } }