분류 전체보기850 배열 보호되어 있는 글 입니다. 2021. 6. 22. 예외처리(4) finally 블럭 finally 블럭은 예외의 발생 여부에 상관없이 실행되어야할 코드를 포함시킬 목적으로 사용된다. try-catch문의 끝에 선택적으로 덧붙여 사용할 수 있으며, try-catch-finally의 순서로 구성된다. try{ //예외가 발생할 가능성이 있는 문장들을 넣는다. }catch(Exception1 e1){ //예외처리를 위한 문장을 적는다. }finally{ //예외의 발생여부에 관계없이 항상 수행되어야하는 문장들을 넣는다. //finally블럭은 try-catch문의 맨 마지막에 위치해야 한다. } 예외가 발생한 경우 try→catch→finally의 순으로 실행되고, 예외가 발생하지 않은 경우에는 try→finally의 순으로 실행된다. public class Finally.. 2021. 6. 22. 예외처리(3) 예외 발생시키기 키워드 throw를 사용해서 프로그래머가 고의로 예외를 발생시킬 수 있으며, 방법은 아래의 순서를 따르면 된다. 먼저, 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든다음 Exception e =new Exception("고의로 발생시켰음"); 키워드 throw를 이용해서 예외를 발생시킨다. throw e; public class ExceptionEx9 { public static void main(String[] args) { try{ Exception e = new Exception("고의로 발생시켰음"); throw e;//예외를 발생시킴 //throw new Exception("고의로 발생시켰음."); 2021. 6. 21. 예외처리(2) 예외의 발생과 catch 블럭 catch 블럭은 괄호()와 블럭{} 두 부분으로 나눠져 있는데, 괄호()내에는 처리하고자 하는 예외와 같은 타입의 참조변수 하나를 선언해야 한다. 예외가 발생하면, 발생한 예외에 해당하는 클래스의 인스턴스가 만들어 진다. 예제 8-5에는 ArithmeticException이 발생했으므로 ArithmeticException인스턴스가 생성된다. 예외가 발생한 문장이 try블럭에 포함되어 있다면, 이 예외를 처리할 수 있는 catch블럭이 있는지 찾게 된다. 첫번째 catch블럭부터 차례로 내려가면서 catch블럭의 괄호()내에 선언된 참조변수의 종류와 생성된 예외 클래스의 인스턴스에 instanceof 연산자를 이용해서 검사하게 되는데, 검사결과가 true인 catch 블럭을.. 2021. 6. 21. 예외처리(1) 예외처리(exception handling) 프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 컴파일에러와 런타임 에러로 나눌 수 있는데, 글자 그대로 컴파일 에러는 컴팡리 할 때 발생하는 에러이고 프로그램의 실행도중에 발생하는 에러를 런타임 에러라고 한다. 이외에도 논리적 에러가 있는데 , 컴파일도 잘되고 실행되 잘되지만 의도한 것과 다르게 동작하는 것을 말한다. 예를 들어, 창고의 재고가 음수가 된다거나, 게임 프로그램에서 비행기가 총알을 맞아도 죽지 않는 경우가 이에 해당된다. 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에.. 2021. 6. 21. 우선순위 큐(Priority Queue) 와 힙(Heap) 2 배열을 기반으로 힙을 구현하는데 필요한 지식들 "노드에 고유의 번호를 부여한다. 그리고 그 번호가 각 노드의 데이터가 저장 될 배열의 인덱스 값이 된다." 위 그림에서 보이듯이 , 구현의 편의를 위해서 인덱스가 0인 위치의 배열 요소는 사용하지 않는다는 사실도 앞서 언급하였다. 그럼 배열을 기반으로 힙을 구현하기 위해서 무엇을 더 알아야 할까? "왼쪽 그리고 오른쪽 자식 노드의 인덱스 값을 얻는 방법, 그리고 부모 노드의 인덱스 값을얻는 방법" 자식 노드의 인덱스 값을 얻는 방법은 데이터의 삭제를 위해서, 부모 노드의 인덱스 값을 얻는 방법은 데이터의 추가를 위해서 필요하다. 그럼 이 두가지 방법을 소개하겠다. 왼쪽 자식 노드의 인덱스 값 : 부모 노드의 인덱스 값 x 2 오른쪽 자식 노드의 인덱스 값 .. 2021. 3. 8. 이전 1 ··· 131 132 133 134 135 136 137 ··· 142 다음