STUDY
[TIL] 예외 되던지기(Exception re-throwing)는 언제 사용될까?
예외 되던지기란? 예외를 처리한 후에 인위적으로 다시 발생시키는 방법 예외가 발생할 가능성이 있는 메서드에서 try-catch문을 사용해서 예외를 처리해주고 catch문에서 필요한 작업을 행한 후에 throw문을 사용해서 예외를 다시 발생시킨다. 예외 되던지기의 예시 1. BadInputException 클래스를 하나 만들어준다. public class BadInputException extends Exception { BadInputException() { super("잘못된 값을 입력하셨습니다."); } } 2. InputMismatchException이 발생하면 BadInputException을 던지도록 한다. import java.util.InputMismatchException; import j..
[TIL] ConcurrentModificationException
ConcurrentModificationException linkedList를 이용하여 다음 코드와 같이 문제를 풀어보려고 했는데 ConcurrentModificationException이 발생했다. public static void main(String[] args) { LinkedList linkedList = new LinkedList(); Iterator it = linkedList.iterator(); for (int i = 1; i
![[TIL] 포크 저장소와 내 로컬을 동기화하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZYIie%2FbtsklnVErzD%2FpM5Fei5ijncGItg6hBP1lK%2Fimg.png)
[TIL] 포크 저장소와 내 로컬을 동기화하기
> * 첫 번째 방법 - sync fork * 두 번째 방법 - bash를 이용하여 포크 주소를 이용하여 fetch해오는 방법 첫 번째 방법 sync fork -> 내 원격 master브랜치로 복사 완료 -> 내 로컬에서 pull 로 원격 master 데이터 가져오기 -> 내 로컬 브랜치를 내 로컬 master와 merge하기. 1. sync fork 클릭! sync fork 하는 것은 내가 포크해온 레포지토리와 내 레포지토리의 master 브랜치에 싱크가 맞춰지는 것. 2. 포크 레포지토리와 연결된 프로젝트가 있는 폴더로 가서 git bash 열기. 3. git checkout master branch를 master로 checkout. ( 옆에 master 뜨는지 확인. ) ※ 브랜치를 옮길 때는 ch..
[TIL] < 자바의 정석 > 예제 HighLow - 예외처리해보기
오늘은 예제 부분을 다 공부 했으므로 거의 마지막이었던 HighLow 문제 예외처리해보기를 기록해보려고 한다. 예제 8-7. 다음은 1~100사이의 숫자를 맞추는 게임을 실행하던 도중에 숫자가 아닌 영문자를 넣어서 발생한 예외이다. 예외처리를 해서 숫자가 아닌 값을 입력했을 때는 다시 입력을 받도록 보완하라. 1과 100사이의 값을 입력하세요 :50 더 작은 수를 입력하세요 1과 100사이의 값을 입력하세요 :asdf Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:939) at java.base/java.util.Scanner.ne..
[TIL] printStackTrace()는 왜 아래에 찍힐까?
> printStackTrace()는 왜 아래에 찍힐까? printStackTrace()의 구현은 어떻게 되어 있을까? err 출력 스트림? printStackTrace()의 취약점 printStackTrace()는 왜 아래에 찍힐까 예제 8-5를 배우고 있었다. 코드는 다음과 같았다. public class Ex8_5 { public static void main( String[] args ) { System.out.println( 1 ); System.out.println( 2 ); try { System.out.println( 3 ); System.out.println( 0 / 0 ); System.out.println( 4 ); } catch ( ArithmeticExcepti..
![[TIL] 풀리퀘스트로 코드 리뷰하기!](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGSjhL%2FbtsjH1slVb7%2FA3lPOeka7Kpk1NBRa9D2Gk%2Fimg.png)
[TIL] 풀리퀘스트로 코드 리뷰하기!
풀 리퀘스트로 코드 리뷰하는 방법 이제까지 풀리퀘스트로 각자의 코드를 모으기만 했었는데, 풀 리퀘스트의 장점인 코드 리뷰를 스터디에서 적용시켜 보기로 했다. 스터디원들에게 코드 리뷰하는 방법을 알려주기 위해 공부한 과정을 기록한다. 1. 자신이 포크해온 원래 레포지토리로 들어가서 pull request 탭으로 들어간다. 2. 코드 리뷰할 풀 리퀘스트로 들어가서 Conversation 탭에 있는 설명을 읽어보고 어떻게 문제를 풀었고, 코드를 썼는지 파악한다. 남이 자신의 코드를 파악하기 좋게 풀 리퀘스트를 할 때 설명을 잘 해야 한다! 3. Files changed 탭에 들어가서 코드리뷰할 파일을 선택한다. 4. 리뷰를 남겨보자. 1) 한 줄에 대한 리뷰를 남기고 싶을 때 줄 옆에 +가 뜬다! 누르면 리뷰..
[TIL] Getter와 Setter. 왜 쓸까?
> Getter와 Setter에 대한 내 과거의 생각 Getter와 Setter를 쓰는 이유 Getter와 Setter에 대한 내 과거의 생각 자바로 키오스크를 구현했을 때나, 호텔 예약 프로그램을 구현했을 때나 드는 생각이 있었다. 왜 Getter와 Setter를 쓰는 것인가. 내가 헷갈린 이유는 이렇다. 아래 코드를 보자. name, company를 필드로 가지는 Car 클래스가 있다. public class Car { String name; String company; public Car( String name, String company ) { this.name = name; this.company = company; } public String getName() { return name; } }..
[TIL] 프로그래머스 - 최댓값과 최솟값 ( 느려지게 하는 범인 찾기 )
> 문제 설명 첫 번째 시도 코드 두 번째 시도 코드 나보다 빨리 푼 사람의 코드 원인 찾기 문제 해결 후 마지막 코드 문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. s에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 첫 번째 시도 코드 s를 split 메서드를 사용하여 String배열로 만든 뒤, 각 원소의 최댓값과 최솟값을 for문, Math.min(), Math.max() 메서드를 이용하여 알아내였다. 마지막에는 String answer = ""에 concat을 해서 re..
![[TIL] Git reset & revert 연습](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9Z0el%2Fbtsji45yNMD%2FQY2Cd6KT8nygsa0rYn0VdK%2Fimg.png)
[TIL] Git reset & revert 연습
> 1. git reset과 revert 연습의 필요성 2. git reset --soft 3. git reset --mixed ( git reset ) 4. git reset --hard 5. git revert 1. git reset과 revert 연습의 필요성 이번 프로젝트 당시 팀원이 본인 브랜치를 마스터 브랜치에 머지를 했는데, 충돌 해결을 그 전 버전으로 해버리셔서 내가 한 작업이 일부 날아가는 일이 있었다. 그 때는 제출 시간을 약간 넘긴 뒤라 조금 정신이 없어서 일단 history를 보며 다시 수정을 하게 되었다. 지금 생각하면 마스터 브랜치의 커밋을 hard로 되돌려 작업 디렉터리를 돌린 다음에 다시 팀원의 브랜치를 머지했으면 됐을 간단한 일이었는데 그 순간에는 이게 훨씬 어려운 일인거 ..
[TIL] I/O Study - ByteArrayInputStream 예제 01
> 1. I/O와 스트림 2. InputStream, OutputStream 3. 코드 보면서 ByteArray 입출력스트림 익히기 4. 후기 ※ 책에 나오는 예제로 공부하였다. 1. I/O와 스트림 IO란? Input과 Output의 약자로 입력과 출력, 간단히 줄여서 입출력이라고 한다. 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것이다. 키보드로부터 데이터를 입력받는 것, 화면에 데이터를 출력하는 것이 입출력의 예라고 할 수 있다. Stream이란? 스트림은 데이터를 운반하는데 사용되는 연결통로이다. 스트림의 '물줄기'라는 뜻처럼 단방향만 가능하다! 입력에 필요한 InputStream과 출력을 위한 Output Stream이 있다. 2. ..