3. 패키지, 예외

LinkedList

탐색의 경우 O(n) / 삽입 삭제의 경우 간단.

ArrayList

탐색의 경우 O(1) / 삽입 삭제의 경우 쭉~ 밀려남

패키지

java.lang.* - 명시적으로 지정하지 않아도 자동으로 import 되는 패키지.
자바 프로그램이 기본적으로 필요로 하는 클래스와 인터페이스 포함

java.io.* - 데이터를 입력받고 출력할 수 있도록 하는 클래스 포함

java.net.* - 네트워크를 통하여 통신할 수 있도록 해주는 클래스 포함

java.util.* - 날짜/시간 조작, 난수 발생 등 각종 유틸리티 클래스와 인터페이스 포함

예외처리

예외

프로그램이 실행되는 동안 발생할 수 있는 비정상적인 조건
번역시의 에러가 아닌 실행시의 에러를 예외라 함

자바에서의 예외처리

예외처리를 위한 Exception 클래스 정의
기본적인 예외는 자바에 미리 정의된 예외를 통해 처리 가능
사용자가 필요한 예외를 직접 정의할 수 있음
예상되는 예외는 미리 처리해주면 무조건적인 프로그램의 종료를 피할 수 있음
예외처리의 사용은 프로그램의 신뢰성을 높여줌

try catch 문

catch문에서 예외가 발생하면 복구시키는게 목표이다. 하지만 그게 말이 쉽지 복구라는건 불가능한 경우가 많이있다.
try catch는 가독성을 떨어뜨린다는 단점이 있다.
ex) 상대방이 랜선을 뽑아서 캐치에 왔다면 어쩔래

finally는 옵션이다.
주로 자원정리가 목적이다. 예외가 발생하던 안하던 들어감.
심지어 try에서 return 을 해도 finally가 실행된다.

1
2
3
4
5
6
7
8
9
10
11
12
int result=0;
int a = 1;
try {
result = 1000 / a;
return;
}
catch(ArithmeticException e) {
System.out.println("예외발생");
return;
} finally {
System.out.println("자원정리"); //실행된다.
}
checked Exception

메소드를 사용하기 위해서는 반드시 예외를 처리해 줘야함 (ex> FileInputStream)

실습1.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream( "./hello.txt" );
int data = fis.read();

}
catch(FileNotFoundException|NullPointerException e) {
/*여러개의 예외를 처리*/
}

catch (Exception e) {
/*모든예외를 처리하고 싶을 때*/
}

실습2. 나의 Exception 정의

MyException 정의

MyException.java
1
2
3
4
5
6
7
8
9
10
public class MyException extends Exception{

public MyException() {
super( "MyException Occurs" );
}

public MyException( String message ) {
super( message );
}
}

MyClass 정의

MyClass.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyClass {
public void danger() throws MyException {


System.out.println( "some code1" );
System.out.println( "some code2" );

if( 1==1 ) {
throw new MyException("MyClass Exception 발행");
}

System.out.println( "some code3" );
System.out.println( "some code4" );
}
}

MyClassTest 정의

MyClassTest.java
1
2
3
4
5
6
7
8
9
10
11
public class MyClassTest {
public static void main(String[] args) {
try {
MyClass myClass = new MyClass();
myClass.danger();
} catch (MyException e) {
e.printStackTrace();
}

}
}
Share