본문 바로가기

Java 기본 문법 - 참조 서적 [이것이 자바다 - 한빛미디어]

(54)
5. Java 자바 [예외 처리] - 사용자 정의 예외와 예외 발생 시키기, 예외 정보 얻기 자바 표준 API 에서 제공하는 예외 클래스만으로는 다양한 종류의 예외를 표현할 수 없다. 예) 은행 업무 처리에서 잔고 보다 많은 출금 요청 시, 오류!! 잔고 부족 예외는 표준 API에 존재하지 않는다. 어플리케이션 예외 : 개발자가 직접 정의해서 만들어야 하므로 사용자 정의 예외라고도 한다. 1. 사용자 정의 예외 클래스 선언 컴파일러가 체크하는 일반 예외로 선언하거나, 컴파일러가 체크하지 않는 실행 예외로 선언할 수 있다. 일반 예외로 선언 시 : Exception 상속 실행 예외로 선언 시 : RuntimeException 상속 형태 public class XXXException extends [ Exception | RuntimeException ] { public XXXException() ..
4. Java 자바 [예외 처리] - 예외 떠넘기기 throws 메소드 내부에서 예외가 발생할 수 있는 코드를 작성 시 try - catch 블록으로 예외를 처리하는 것이 기본이지만, 경우에 따라 메소드를 호출한 곳으로 예외를 떠넘길 수 있다. throws 키워드 : 메소드 선언부 끝에 작성, 메소드에서 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할을 한다. 형태 리턴타입 메소드명(매개변수선언1, . . . ) throws 예외클래스1, 예외클래스2, . . . { . . . } 발생할 수 있는 예외를 종류별로 throws 뒤에 나열하는 것이 일반적이지만, Exception (상위 예외 클래스) 만으로 모든 예외를 간단히 떠넘길 수 있다. 형태 리턴타입 메소드명(매개변수선언1, . . . ) throws Exception { . . . } throws 키워드가 붙..
3. Java 자바 [예외 처리] - 자동 리소스 닫기 try - with - resource 문 자바 7 버전 부터 새로 추가 된 try - with - resource 를 사용하면 예외 발생 여부와 상관 없이 사용했던 리소스 객체 ( 각종 입출력 스트림, 서버 소켓, 소켓, 각종 채널 등..) 의 close() 메소드를 호출하여 안전하게 리소스를 닫아준다. 리소스 : 데이터를 읽고 쓰는 객체 ex) 파일의 데이터를 읽는 FileInputStream 객체, 파일에 쓰는 FileOutputStream 리소스 객체 자바 6 이전 버전의 코드 FileInputStream fis = null; try { fis = new FileInputStream("file.txt"); . . . } catch(IOException e) { . . . } finally { if(fis != null) { try { fi..
2. Java 자바 [예외 처리] - 예외 처리 코드 try-catch-finally 문 프로그램에서 예외가 발생한 경우, 프로그램의 갑작스러운 종료를 막고 정상 실행을 유지할 수 있도록 처리하는 코드를 예외 처리 코드라고 한다. 자바 컴파일러는 소스 파일을 컴파일 할 때 일반 예외가 발생할 가능성이 있는 코드를 발견하면, 컴파일 오류를 발생시켜서 개발자가 강제적으로 예외 처리 코드를 작성하도록 요구한다. 하지만 실행 예외는 컴파일러가 체크하지 않기 때문에, 개발자의 경험을 바탕으로 작성해야 한다. 예외 처리 코드는 try - catch - finally 블록을 이용한다. try - catch - finally 블록은 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 할 수 있게 한다. try 블록에는 예외 발생 가능성이 있는 코드가 위치한다. try ..
1. Java 자바 [예외 처리] - 예외와 예외 클래스 에러(Error) 컴퓨터의 하드웨어 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것. 에러는 JVM 실행에 문제가 발생했다는 의미이므로 JVM 위에서 실행되는 프로그램도 실행 불능이 된다. 예외(Exception) 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류. 예외가 발생하면 프로그램은 곧바로 종료된다. (에러와 동일) 예외의 종류 예외에는 2 가지 종류가 있다. - 일반 예외(Exception) - 실행 예외(RuntimeException) - 일반 예외 (컴파일러 체크 예외) 자바 소스를 컴파일하는 과정에서 예외 처리 코드가 필요한 지 검사한다. 예외 처리 코드가 없다면 컴파일 오류가 발생한다. - 실행 예외 컴파일 과정에서 예외 처리 코드를 검사하..
5. Java 자바 - 필드의 다형성 클래스의 자동 타입 변환이 필요한 이유 자식 타입으로 사용하면 될텐데, 부모 타입으로 변환해서 사용하는 이유는?? 다형성을 구현하는 기술적 방법 때문이다. 다형성 : 동일한 타입을 사용하지만, 다양한 결과가 나오는 성질 주로 필드의 값을 다양화함으로써 실행 결과가 다르게 나오도록 구현한다. 필드 타입은 변함이 없지만, 실행 도중에 어떤 객체를 필드로 저장하느냐에 따라 실행 결과가 달라질 수 있다. (필드의 다형성) 프로그램은 수 많은 객체들이 서로 연결되고 각자의 역할을 한다. 이 객체들은 다른 객체로 교체될 수 있어야 한다. (부품 처럼!) ex) 자동차 클래스에 포함된 타이어 클래스 자동차 클래스를 처음 설계할 때 사용한 타이어 객체는 언제든지 성능 좋은 타이어 객체로 교체할 수 있어야 한다. 새로 ..
4. Java 자바 - 타입 변환과 다형성 다형성 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다. 다형성을 위해 자바는 부모 클래스로 타입 변환을 허용한다. 즉 부모 타입에 모든 자식 객체가 대입될 수 있다. (부모 타입의 규격화) 이것을 이용하면 객체는 부품화가 가능하다. ex) 타이어 클래스 타입을 적용했다면 이 클래스를 상속한 실제 타이어들은 어떤 것이든 상관 없이 장착(대입) 가능하다. 자동차는 타이어 타입으로 Hankook 타이어와 Kumho 타이어를 사용하지만, 각 타이어의 성능은 다르게 나온다. 위 그림은 아래 코드처럼 표현된다. public class Car { Tire t1 = new HankookTire(); // 자식 타입 객체 대..
3. Java 자바 - protected 접근 제한자 protected 접근 제한자 (상속과 관련이 있다.) protected 는 public 과 default 접근 제한의 중간쯤에 해당된다. 같은 패키지에서는 default 와 같이 접근 제한이 없지만, 다른 패키지에서는 자식 클래스만 접근을 허용한다. protected 는 필드, 생성자, 메소드 선언에 사용될 수 있다. ex) A.java package package1; public class A { //필드 protected String field; //생성자 protected A() { } //메소드 protected void method() { } } ex) B 클래스는 A 클래스와 동일한 패키지에 있다. default 접근 제한과 마찬가지로 B 클래스의 생성자와 메소드에는 A 클래스의 protec..