adavaj P(출처 이것이 자바다)/예외처리

chapter10 예외처리 백T

Hesitater 2021. 10. 5. 20:26
728x90

java20210325/src/p10/lecture at master · sebaek/java20210325 (github.com)

 

GitHub - sebaek/java20210325

Contribute to sebaek/java20210325 development by creating an account on GitHub.

github.com

 

선생님 깃허브 참조 

잘 모르더라도 코드 입력해보고 실행해보기

 

A01Exception  

A02NullPointerException

NullPointerException 

 

 

Null값으로 인하여 발생하는 Runtime Exception

java.lang.NullPointerException이 발생되는 가장 큰 원인은 Java 프로그래밍에서 사용할 객체를 생성한 후에 인스턴스를 생성하지 않은 상태에서 Null 오브젝트를 사용하려고 할 때에 발생됩니다.

 

 

 

 

 

 

 

A03ArrayIndexOutOfBoundsException

초기에 정해진 배열의 크기보다 더 많은 양의 데이터를 넣고자 할떄 주로 발생

 

arr2의 크기는 2인데  arr2[2]를 넣으려고하니 발생..?

 

 

 

 

 

A04NumberFormatException

NumberFormatException

Number과 관련된 오류

Format Exception 형식 오류라는 의미..

숫자 형식 오류

 

숫자가 아닌 것을 숫자 형으로 변환하려고 할떄 일어난다.

가장 많이 만나는 유형은 Integer.parseInt(String s)를 사용하면서다 

문자열을 int형으로 변환할 때 사용하게 되는데 의도치 않게 숫자 외에 형태가 들어가있을때 만나게됨

 

 

 

 

 

A05ClassCastException

 

원인 참조한 라이브러리 안의 클래스가 중복되어 정확한 경로를 찾지 못하여 발생하는 것이다.

 

 

 

 

A06RuntimeException

RuntimeException

말 그대로 실해 중에 발생하며 시스템 환경적으로나 인풋 값이 잘못된 겨웅, 혹은 의도적으로

프로그래머가 잡아내기위한 조건등에 부합할 때 발생(throw)되게 만든다.

 

예외 처리하지 않아도 되는 Unchecked Exception

Exception은 프로그래밍 시에 예외 처리를 필수적으로 해야하는 Checked Exception과 Uncehecked Exception으로 나눌 수있다. RuntimeException을 상속받지 않고 Exception을 상속받는 모든 Exception는 Checked Excetption이다.

 

Checked Exception들은  try~catch로 감싸서 catch 하던가  해당 메소드에 throws Exception를 달아서 예외를 다시 호출자에게 미루는 방법을 써야한다 안쓰면 에러나서 안되용~

 

이와 다르게 RuntimeException은 try~catch 나 throws Exception을 강제하지 않는다 

예외처리를 해도되고 안해도 된다. 그 처리를 순수 프로그래머나 프레임워크에 맡긴다고 생각한다.

 

RuntimeException은 모든 예외를 꼭 처리하려고 하면 독이 된다 라는 말도 있다고 합니다...

 

 

 

A7ClassNotFoundException

java.lang.ClassNotFoundException

 

컴파일된 java class 파일을 찾을 수 없다.  라는 내용입니다.

하지만 가끔 해당 경로에 분명 파일이 있음에도,ClassNotFoundExceptiondl 떨어질 때가 있다고 합니다.

여러가지 이유들은.. 제가아직 부족하여 모릅니다...ㅎㅎ;

 

 

 

A08TryCatch

 

 

A09TryCatchFinally

 

finally블록은 try-catch 마지막에 반드시 실행된다. (예외, finally 실행 도중 쓰레드가 종료되는 경우 제외.)
finally는 보통 catch 블록 다음에 사용한다. 무조건 catch 다음에 사용할 필요는 없다 try { } finally { }도 가능하다. 하지만 보통 try {} catch {} finally {}로 많이 사용하므로 여기서는 try-catch-finally로 설명을 하겠다.

정상 동작의 경우 예외가 발생하지 않으므로 try블록 모두 실행하고 finally 블록을 실행한다.

 

예외가 발생하는 경우는 try블록 실행 도중 catch블록으로 넘어가고 catch블록 끝난후 finally블록을 실행한다

 

finally는 try-catch블록의 마지막에 실행되는 것이지 메서드의 마지막에 실행되는것이 아니란 점을 알아두자.

 



 

A10MultiCatch

 

 

A11Polymorphism

 

 

 

A12MultiCatchBolock

문자열을 숫자로 못바꾸고 심지어 Index도 없네;ㄷㄷ

 

 

 

A13TryWithResources

 

try - with - resources 형태만 알아두자 내가 지금 작성은 못하니깐 

 

A14TryWithResoruces

 

 

try - with - resources 형태만 알아두자 내가 지금 작성은 못하니깐

 

A15Throws.java

이상태에서

 

method3() 의 ClassNotFoundException 을 method2() 로 넘기고

method2() 의 ClassNotFoundException 을 method1() 로 넘기고

method1() 의 ClassNotFoundException 을 main 으로 넘긴다..?

컴파일 오류는 안나는데 run해보면 저렇게 출력된다

 

 

java.lang.class

클래스의 정보를 얻기 위한 클래스

클래스의 정보를 얻어오는 클래스입니다.

 

forName() :물리적인 클래스 파일명을 인자로 넣어주면 이에 해당하는 클래스를 반환해 줍니다.

클래스를 조사하귀 위한 클래스 입니다.

 

 

 

 


A16Throws.java

Class.forName 으로 ClassNotFoundException 

new FileInputStream(""); 으로FileNotFoundException    

메인 메소드에서 try~catch 문으로 Exception들 잡고


A17ThrowsPolymorphism.java

 

A16에서 처리를  그냥 throws Exception 으로 넘기고 메인메소드에서도 throws Exception으로 넘김

 


A18ThrowKeyword.java

 


A19CustomException.java

솔직히 이부분 잘모르겠음  물론 모르는게 많지만.

검색해서 읽어봐도 일단 이해가안됨 ..

보니깐

custom exception 을 만들고 (여기서는 IZeroException)

그것을 Exception에 상속시킨다음에 쓰는 것같음

약간 내가 코드를 만들다가 Exception 날꺼 같은거를 미리 설정해두고 그상황이 나왔을때

어떻게 해야할지 하는 느낌 

약간 사용자설정.. ? 같은느낌임

 

자바초보라 이해안되는것들이 많지만 그냥 책읽고 하다보면 지식이 쌓여서 다음에 볼때는

조금은 더 이해할꺼라고 믿...지는 않고 그냥 담에 화이팅

 


IZeroException.java

 

 

'adavaj P(출처 이것이 자바다) > 예외처리' 카테고리의 다른 글

Chapter11 기본 API클래스 01~09  (0) 2021.11.13
Chapter10 예외처리  (0) 2021.10.13