티스토리 뷰

Given the code fragment

 

package ocjap; 

public class Test12 { 

void readCard(int cardNo) throws Exception{ 
System.out.println("Reading Card"); 


void checkCard(int cardNo) throws RuntimeException{ // line n1
System.out.println("Checking Card"); 


public static void main(String[] args) { 
Test12 ex =new Test12(); 
int cardNo=12345; 
ex.checkCard(cardNo); // line n2
ex.readCard(cardNo);   // line n3



 

What is the result?

A. Reading Card

Checking Card

B. Compilation fails only at line n1.

C. Compilation fails only at line n2.

D. Compilation fails only at line n3.

E. Compilation fails at both line n2 and line n3.

 

Corrent Answer: D

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Unhandled exception type Exception

at ocjap.Test12.main(Test12.java:17)  

참고로.. 이클립스에서는

2 quick fixes available

Add throws declaration (main 메소드에 throws Exception 추가)

Surround with try/catch

 

wikidocs.netException은 크게 두가지로 구분된다.
1. RuntimeException
2. Exception

RuntimeException은 실행 시 발생하는 예외이고 Exception은 컴파일 시 발생하는 예외이다.
즉, Excpetion은 프로그램 작성 시 이미 예측가능한 예외를 작성할 때 사용하고 RuntimeException은 발생 할 수도 발생 안 할수도 있는 경우에 작성한다.
다른 말로 Exception을 Checked Exception, RuntimeException은 Unchecked Exception이라고도 한다.

예외 던지기(throws)
throws를 사용하면 호출한 곳에서 예외를 처리하도록 던진다.
(예외를 뒤로 미루기 라고도 한다.)

main 메소드 컴파일 에러가 발생. throws 구문 때문에 readCard 메소드의 Exception의 예외를 처리해야 하는 대상이 main 메소드(readCard 메소드를 호출하는 메소드)이기 때문이다.

try... catch로 감싸주거나 throws를 써야한다.

https://wikidocs.net/229

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 29 30 31
글 보관함