-
10일차 - JAVA 예외(Feat. 완강!!, 앞으로의 계획은?)프로그래밍 언어/JAVA 2021. 4. 13. 19:57
오늘은 JAVA에서 예외를 처리하는 방법에 대해서 배웠다. python을 배울 때에도 예외 처리에 대해 배웠는데 크게 다른 점은 없어서 배우는 데 어려운 점은 없었다.
파이썬으로 웹 크롤링을 하면서 예외처리를 자주 사용했었던 경험이 있다.
나중에 자바로 프로젝트를 진행한다면 유용하게 쓰일 기능이라고 생각이 든다.
<핵심정리>
1. 오류(Error) vs 예외(Exception)
먼저 예외 처리를 하는 법을 배우기 전에 예외가 무엇을 의미하는지 알아갈 필요가 있다.
예외와 비슷한 개념의 단어인 오류를 먼저 알아보자.
프로그래밍을 하고 완성된 프로그램에서는 오류가 날 수 있다. 시스템 오류가 날 수도 있고 코드가 잘못되어 오류가날 수 도 있다.
이러한 오류는 우리가 어쩔 수 없이 받아들여야하고 오류가 났을 때 해결해야한다.
하지만 예외는 다르다.
프로그래밍을 하면서 발생한 예외는 그 예외사항을 피하여 진행할 수 있도록 만들 수 있다.
여기서 예외라는 것에는 무엇이 있을까?
파일을 여는 작업을 하는데 실제로는 파일이 없다거나 0으로 어떠한 수를 나눈다거나, 배열을 다루는 프로그램에서 범위를 벗어난 인덱스를 호출한다거나 하는 상황이 있다.
.
2. 예외 발생과 처리
말로 설명하기는 어려운 부분이여서 생활코딩님이 사용한 코드로 설명을 하려고 한다.
public class ExceptionApp { public static void main(String[] args) { System.out.println(1); System.out.println(2/0); // Run-Time Exception ArithmeticException } }
위와같은 코드를 작성하여 실행해보면 ArithmeticException이라는 예외가 발생한다.
0으로 나누는 행위는 안된다는 것을 컴파일러가 알려주는 것이다.
그러면 이러한 예외를 어떻게 처리하면 될까?
public class ExceptionApp { public static void main(String[] args){ try { System.out.println(2); System.out.println(2/0); //ArithmeticException } catch(ArithmeticException e) { System.out.println("잘못된 계산이네요."); } System.out.println(3); } }
이렇게 try catch 문을 활용하면 된다.
예외가 발생될 것으로 예상되는 부분은 try의 중괄호{}부분에 넣어준다.
그리고 예외가 발생한다면 어떻게 처리할지를 catch의 중괄호{}부분에 넣어주면 된다.
3. catch 문에 있는 e 변수
위 코드에서 보면 catch의 중괄호()안에 예외명이 쓰여있고 e라는 변수가 있다.
이 e라는 변수는 아무 변수명이나 사용가능하지만 보통 e라고 사용하는 것 같다.
그러면 이 e라는 변수를 사용하여 할 수 있는 기능이 있을까?
getMessage 메소드가 있다.
e.getMessage()를 통해 어떠한 이유로 예외가 발생했는지에 대한 정보를 알려준다.
그리고 printStackTrace메소드가 있다.
우리가 예외가 있는 코드를 돌리면 빨간 글씨로 무언가를 경고하는 듯한 메시지를 접하게 된다.
이 빨간메시지를 e.printStackTrace()를 통해 출력을 할 수 있다.
4. finally문
try catch문을 사용하다보면 필요한 기능이 하나 존재할 것이다.
public class ExceptionApp { public static void main(String[] args){ try { System.out.println(2); System.out.println(2/0); //ArithmeticException System.out.println(3); } catch(ArithmeticException e) { System.out.println("잘못된 계산이네요."); } System.out.println(4); } }
위 코드처럼 프로그래밍을 하면 System.out.println(2/0); 부분에서 예외가 발생하고 catch문이 실행될 것이다.
그런데 System.out.println(2/0); 뒷 부분에 있는 System.out.println(3);
을 반드시 실행시키고 싶은 경우는 어떻게 해야할까?이럴 때 사용하는 것이 finally문이다.
public class ExceptionApp { public static void main(String[] args){ try { System.out.println(2); System.out.println(2/0); //ArithmeticException } catch(ArithmeticException e) { System.out.println("잘못된 계산이네요."); } finally{ System.out.println(3); } System.out.println(4); } }
이렇게 코드를 짜주면 예외의 발생과 관계없이 finally의 중괄호{}부분의 코드를 실행이 된다.
-----------------------------------------------------------------------------------------<10일차 후기>
오늘로써 쉽게 배우는 자바2 강좌를 완강하고 자바에 대한 기초 문법에 대한 공부는 어느정도 했다고 생각한다.
하지만, 모든 공부에 있어서 기초를 중요하니까 여기서 만족하고 바로 프레임워크를 공부하려고는 하지 않을 생각이다.
먼저 내 계획은 다음과 같다.
1. 이것이 자바다 책으로 복습과 추가적인 지식 습득
오늘 도서관에서 이것이 자바다라는 책을 빌려왔다.
많은 사람들이 자바 기초를 공부한다고 할 때 많이들 추천해준 책이다.
이 책을 보면서 내가 10일동안 배운 내용들을 복습도 하고 추가적으로 지식도 얻을 생각이다.
추가적으로 얻은 지식은 포스팅을 하려고 한다.
2. 간단한 프로젝트 진행
지금까지 배운 내용들을 바탕으로 간단한 프로젝트를 진행하려고 한다.
나는 개인적으로 프로그래밍 공부를 시작하려고 했을 때 자바지기(포비)님의 유튜브를 참조했다.
먼저 책을 한 권 잡아서 공부를 하고 그 책에서 배운 예제 실습으로 자신만의 프로젝트를 진행해보라고 하셨다.
유튜브 영상에서는 파이썬을 공부하고 시계를 만드는 프로젝트를 7일동안 어떻게 해왔는지를 알려주었다.
지금 생각으로는 생활코딩님 강좌에서 소득을 계산하는 실습을 진행한 적이 있어서 이것을 활용해서
식당에서 사용하는 포스기를 만들어볼 생각이다.
지금 당장 만들려고 하면 어려워 보이지만 한 단계씩 업그레이드되는 모습을 기대하고 있다.
앞으로 일주일 정도는 프로젝트를 진행하고 CS공부는 계속하면서 포스팅할 계획이다.
그리고 지금은 웹 벡엔드 개발자가 되고 싶다는 목표가 있기 때문에 HTML/CSS/JS 기초 공부도 틈틈히 하고 포스팅해보려고 한다.
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[스터디 1주차] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 (0) 2021.05.19 온라인 자바 스터디 참여 시작!! (With WhiteShip) (0) 2021.05.19 9일차 - JAVA 인터페이스 (0) 2021.04.12 8일차 - JAVA 상속 (0) 2021.04.11 7일차 - JAVA 객체지향 프로그래밍(클래스, 인스턴스) (0) 2021.04.09