일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 웹퍼블리셔
- 호스팅
- 홈페이지제작
- 우체국 우편번호
- 우편번호 API
- 웹퍼블리싱
- 무료 웹 호스팅
- 마우스 오른쪽 버튼
- 무료홈페이지
- 새우편번호
- 퍼빌리셔
- 무료호스팅
- 자바스크립트
- 복사방지
- 무료 홈페이지 제작
- 글자뒤집기
- 자바키워드
- 마우스오른쪽
- 무료사이트
- 무료서버
- 클릭해제
- php호스팅
- 무료
- 무료제작
- postcodify
- 무료 호스팅
- 문자열 뒤집기
- php
- 웹호스팅
- 무료 홈페이지
Archives
- Today
- Total
Developer Factory
31. JAVA Throwable try .. catch 예외처리 본문
예외 처리란?
시스템 실행하는 중에 오류가 발생했을 때 시스템을 계속 실행하게 만드는 문법
1. 호출자에게 보고하지 않고 처리하는 방법
public void Test() {
try{
// 소스가 실행 되는 곳
} catch (Throwable e) {
// 예외가 발생 시 조치를 취하는 곳
}
}
Test();
// 오류가 발생하더라도 호출자는 모른다.
2. 호출자에게 바로 보고하는 방법.
중요한 오류는 처리하지 말고 호출자에게..
public void Test() throws Throwable {
}
// 호출하는 메서드가 오류를 던진다고 선언되어 있으면 반드시 try..catch 문을 사용해서 호출해야 된다.
try{
Test(); // -> 예외가 발생 시 즉시 호출자에게 보고한다.
} catch (Throwable e) {
// 예외 처리 하는 곳. 중요한 예외는 호출자가 처리된다.
}
3. 선 조치 후 보고 방법.
중요한 예외 발생 시 보고하기 전에 먼저 오류 처리하고 보고 함.
public void Test() throws Throwable {
try {
} catch (Throwable e) {
// 일단 오류 처리 하고..
// 호출자에게 오류 내용 보고함
throw new Throwable("오류내용....");
}
}
try {
Test(); // 치명적인 오류 발생 시 내부적으로 처리한 후 보고한다.
} catch (Throwable e) {
// 예외에 대한 추가 조치를 한다.
}
* 예외를 보고하는 방법
- throw [Throwable 객체]
public void m() throws Throwable {
// 예외 상황이 발생했다 가정!
throw new Throwable("오류발생!");
}
public void m2() throws Exception {
throw new Exception("오류발생!");
}
* Error 계열 또는 RuntimeException 계열은 메서드 선언부에 예외를 선언할 필요가 없다.
public void m3() throws Error {
throw new Error("오호라.. 오류~!" );
}
public void m4() {
throw new RuntimeException("오류!~!");
}
package basic.exame06.episode2;
/* 예외처리
* - 시스템 실행하는 중에 오류가 발생했을 때 시스템을 멈추지 않고 적절한 조치 후에
* 계속 실행하게 만드는 문법
* - 목적 : 예외 상황 발생 시 시스템을 멈추지 않게 하는 것.
*/
class MyObject {
// 1. 작은 오류는 보고하지 말고 처리할 것.
// - 화장실 변기 똥 묻었어~~
public void 청소하라1(){
try {
// 예외 발생 : 변기 똥 묻다.
} catch (Throwable e){
// 적절한 조치를 취한다.
}
}
// 2. 중요한 오류 발생 시 보고할 것
// - 화장실 변기 깨졌으~~
// - 중요 오류는 직접 처리하지 말고 호출자에게 보고한다.
public void 청소하라2() throws Throwable {
// 중요 예외 발생 : 변기 깨짐..
}
// 3. 중요한 예외 발생. 보고하기 전에 처리 필요가 있음.
// - 변기 휴지통 불났으~~
public void 청소하라3() throws Throwable {
try{
// 변기 휴지통 불남.
} catch (Throwable e){
// 인단 오류 상황 처리
// 호출자에게 오류 내용 보고
throw new Throwable("오류내용...");
}
}
}
public class ExTest01 {
public static void main( String[] args) {
MyObject obj = new MyObject();
// 호출하는 메서드가 오류를 던진다고 선언되어 있으면
// 반드시 try..catch 문을 사용해서 호출해야 한다.
try {
obj.청소하라3(); // 치명적인 오류 발생. 내부적으로 처리한 후 보고한다.
} catch ( Throwable e) {
// 예외에 대해 추가 조치를 한다.
}
}
public static void main02( String[] args) {
MyObject obj = new MyObject();
// 호출하는 메서드가 오류를 던진다고 선언되어 있으면
// 반드시 try..catch 문을 사용해서 호출해야 한다.
try {
obj.청소하라2(); // 예외가 발생하면 즉시 호출자에게 보고한다.
} catch ( Throwable e) {
// 중요한 예외는 호출자가 처리한다.
}
}
public static void main01( String[] args) {
MyObject obj = new MyObject();
obj.청소하라1(); // 청소하라1()에서 오류가 발생하더라도 호출자는 모른다.
// 호출자가 알 필요도 없는것은 보고할 필요가 없다.
}
}
package basic.exame06.episode2;
public class ExTest02 {
static class MyObject {
// 예외를 보고하는 방법
// - throw [Throwable 객체];
// - 예외를 보고하는 메서드는 반드시 메서드 선언부에
// 어떤 예외를 보고하는지 작성해야 함.
// 문법 : 메서드명() throws 예외클래스명, 예외클래스명, ... {}
// java.lang.Throwable
// -> java.long.Exception (메서드 선언부에 예외 클래스 선언)
// : 애플리케이션 예외
// -> java.lang.Error (메서드 선언부에 예외 클래스 선언할 필요 없음)
// : 시스템 예외
public void m() throws Throwable {
// 예외 상황이 발생했다 가정!
throw new Throwable("오류발생!");
}
public void m2() throws Exception {
throw new Exception("오류발생!");
}
// Error 계열 또는 RuntimeException 계열의 예외 객체는
// 메서드 선언부에 예외를 선언할 필요가 없다.
// 물론, 선언해도 상관없다.
// RuntimeException은 Exception의 자식이다. (내 놓은 자식이다.)
public void m3() throws Error {
throw new Error("오호라.. 오류~!" );
}
public void m4() {
throw new RuntimeException("오류!~!");
}
public void test1()/* throws Exception */{
test2();
}
public void test2()/* throws Exception */{
test3();
}
public void test3()/* throws Exception */{
//m2(); // m2()는 Exception을 던지기 때문에 무조건 호출자에게 보고하거나
// try..catch 블록으로 처리해야 한다.
m4(); // RuntimeException은 궅이 보고할 필요가 없다. 자동보고!
}
}
public static void main( String[] args) {
MyObject obj = new MyObject();
// Error나 RuntimeException은 JVM에게 도착하기 전에만 처리하면 된다.
try{
obj.test1();
} catch(Exception e){
// JVM에 전달하지 않고 마지막 단계에서 처리
}
}
public static void main05( String[] args) /* throws Throwable */ {
MyObject obj = new MyObject();
// m(), m2() 메서드는 Throwable, Exception 예외를 던지기 때문에
// 반드시 try..catch를 사용해야 한다.
// => 프로그래밍을 하다보면 메서드 -> 메서드 -> 메서드 -> 메서드 이렇게 여러 단계의
// 걸처 메서드를 호출할 수 있다.
// 메서드를 호출할 때 마다 .. try ... catch 블록을 써야하거나,
// 또는 메서드 선언부에 예외 클래스를 선언해야 한다면 무척 피곤할 것이다.
// 이런 경우 좀 더 가볍게 프로그래밍을 할 수 있도록 RuntimeException을 제공한다.
obj.m3(); // Error
obj.m4(); // RuntimeException
}
public static void main04( String[] args) throws Throwable {
MyObject obj = new MyObject();
// try 블럭에서 부모, 자식 관계를 갖는 예외가 던져진다면,
// 각각의 예외에 대해 catch 블럭을 여러 개 선언할 수 있다.
// 단, 자식 예외부터 받는 순서로 catch 블록을 만든다.
try{
obj.m(); // Throwable
obj.m2(); // Exception
} catch (Exception e){ // 자식
} catch (Throwable e){ // 부모
}
}
public static void main03( String[] args) throws Throwable {
MyObject obj = new MyObject();
try{
obj.m(); // Throwable
obj.m2(); // Exception
} catch (Throwable e){
// try 블럭에서 부모, 자식 관계를 갖는 예외가 던져진다면,
// 부모 참조 변수로 받으면 된다.
}
}
public static void main02( String[] args) throws Throwable {
MyObject obj = new MyObject();
// 예외를 처리하는 방법
// try .. catch 블럭을 사용한다.
// - 업무 처리 코드와 예외 처리 코드를 분리할 수 있다.
// => 코드 가독성이 좋아 진다.
try{
obj.m();
} catch (Throwable e){
}
}
public static void main01( String[] args) throws Throwable {
MyObject obj = new MyObject();
// Throwable이나 Exception 계열의 예외를 던지는 메서드를 호출할 때는
// 반드시 try... catch로 예외를 받아야 한다.
// 예외를 받기 싫으면 다시 호출자에게 넘긴다.
obj.m();
}
}
'Developer > Java' 카테고리의 다른 글
30. JAVA Interpace 와 추상 클래스 (0) | 2014.07.03 |
---|---|
29. JAVA 객체간의 관계 with UML (0) | 2014.07.03 |
28. JAVA AWT의 hierarchy (0) | 2014.07.03 |
27. JAVA 상속 (0) | 2014.07.03 |
26. JAVA JavaWindow Programming (0) | 2014.07.03 |