JAVA PROGRAMMING 실습 09. 예외처리

Similar documents
PowerPoint 프레젠테이션

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - java2-lecture2.ppt [호환 모드]

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Template

Microsoft PowerPoint - 3장

슬라이드 1

Cluster management software

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

9장.예외와 단정

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lecture3.ppt [호환 모드]

12-file.key

Semantic Consistency in Information Exchange

Design Issues

JAVA PROGRAMMING 실습 08.다형성

C++ Programming

슬라이드 1

gnu-lee-oop-kor-lec06-3-chap7

PowerPoint 프레젠테이션

Microsoft PowerPoint - lec11_1516.ppt [호환 모드]

歯JavaExceptionHandling.PDF

PowerPoint Presentation

No Slide Title

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Java7.pptx

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint 프레젠테이션

자바-11장N'1-502

JAVA PROGRAMMING 실습 02. 표준 입출력

윤성우의 열혈 TCP/IP 소켓 프로그래밍

JAVA PROGRAMMING 실습 05. 객체의 활용

제11장 프로세스와 쓰레드

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

PowerPoint Presentation

Java ...

Microsoft Word - java19-1-midterm-answer.doc

PowerPoint Presentation

슬라이드 1

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Network Programming

PowerPoint Presentation

4장.문장

쉽게

rmi_박준용_final.PDF

PowerPoint Presentation

Microsoft PowerPoint - 03-TCP Programming.ppt

02 C h a p t e r Java

TEST BANK & SOLUTION

12-file.key

JAVA PROGRAMMING 실습 02. 표준 입출력

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint 프레젠테이션

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

PowerPoint 프레젠테이션

Microsoft PowerPoint - 2강

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lect04.pptx

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밍

FileMaker ODBC and JDBC Guide

교육자료

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint 프레젠테이션

Java

금오공대 컴퓨터공학전공 강의자료

쉽게 풀어쓴 C 프로그래밍

Microsoft Word - EEL2 Lab4.docx

int total = 0; for( int i=1; i<=5; i++ ) { for( int j=1; j<=i; i++ ) { total ++; System.out.println( total ); 대구분 : 객체와 Class 소구분 : 객체생성과사용 / Class 선언

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

FileMaker ODBC and JDBC Guide

신림프로그래머_클린코드.key

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft Word - EEL2 Lab5 예외처리와 스레드.docx

PowerPoint Presentation

PowerPoint Presentation

PowerPoint 프레젠테이션

(Microsoft PowerPoint - Chapter17 RMI.ppt [\310\243\310\257 \270\360\265\345])

gnu-lee-oop-kor-lec11-1-chap15

PowerPoint Presentation

[ 프로젝트이름 ] : Project_Car [ 프로젝트를만든목적 ] : 임의의자동차판매소가있다고가정하고, 고객이원하는자동차의각부분을 Java 를이용하여객 체로생성하고, 그것을제어하는메소드를이용하여자동차객체를생성하는것이목표이다. [ 프로젝트패키지와클래스의내용설명 ] [

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

No Slide Title

Microsoft PowerPoint - lec12 [호환 모드]

쉽게 풀어쓴 C 프로그래밍

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

Transcription:

2015 학년도 2 학기

예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!!

나뉨수를입력하시오 :100 나눗수를입력하시오 :0 Exception in thread "main" java.lang.arithmeticexception: / by zero at ExceptionExample1.main(ExceptionExample1.java:12) divisor 을 0 으로입력해보자!! 결과는?? ArithmeticException 예외

자바는예외를객체로취급 예외관련클래스 java.lang 패키지에서제공 예외관련클래스계층구조 자바프로그램에서는 Error, RuntimeException 클래스의하위클래스들을제외한모든예외를처리하여야함 일반적으로 Error, RuntimeException 클래스들과연관된예외는프로그램에서처리하지않음 예외를처리하여얻는이득보다예외를처리하기위한노력이너무크기때문

try - catch (- finally) 문 발생한예외에대해개발자가작성한프로그램내에서대응하는것 try{ 예외가발생할가능성이있는실행문 (try 블록 ) catch( 처리할예외타입선언 ){ 예외처리문 (catch 블록 ) finally{ //finally 생략가능예외발생여부와상관없이무조건실행되는문장

try 블록에서예외가발생하지않은정상적인경우 try {... 실행문... catch ( 처리할예외타입선언 ) { 예외처리문 finally { finally 블록문 try 블록에서예외가발생한경우 try {... 에외발생실행문... catch ( 처리할예외타입선언 ) { 예외처리문 finally { finally 블록문

예외 예외가발생할때 ArithmeticException 정수를 0 으로나눌때발생 NullPointerException Null 레퍼런스참조할때발생 ClassCastException 변환할수없는타입으로객체를변환할때발생 OutOfMemoryException 메모리가부족한경우발생 ArrayIndexOutOfBoundsException 배열의범위를벗어난접근시발생 IllegalArgumentException 잘못된인자전달시발생 IOException 입출력동작실패또는인터럽트시발생 NumberFormatException 문자열이나타내는숫자와일치하지않는타입의숫자로변환시발생 ClassNotFoundException 클래스가존재하지않을때발생 IlligalAcessException 클래스에대한접근이금지된경우

import java.util.scanner; public class ExceptionExample2 { public static void main (String[] args) { Scanner rd = new Scanner(System.in); int divisor = 0; int dividend = 0; System.out.print(" 나뉨수를입력하시오 :"); dividend = rd.nextint(); System.out.print(" 나눗수를입력하시오 :"); divisor = rd.nextint(); try { ArithmeticException 예외발생 System.out.println(dividend+" 를 "+divisor+" 로나누면몫은 "+ dividend/divisor+" 입니다."); catch (ArithmeticException e) { System.out.println("0 으로나눌수없습니다."); 나뉨수를입력하시오 :100 나눗수를입력하시오 :0 0 으로나눌수없습니다.

위의코드에서발생하는 import java.io.*; public class ExceptionExample { public static void main(string[] args){ FileReader file = new FileReader("a.txt"); int i; 예외를처리할예외처리 문장을작성하시오. while((i=file.read())!= -1){ System.out.println((char)i); file.close();

import java.io.*; public class ExceptionExample { public static void main(string[] args){ FileReader file; try { file = new FileReader("a.txt"); int i; while((i=file.read())!= -1){ System.out.println((char)i); file.close(); catch (Exception e) { System.out.println(e); //e.printstacktrace();

이모두를처리하는클래스를작성하여라. 처리는 main() 내에서이루어져도무방. 단. a 와 b 값은명령행인자로값을받아서사용!! 처리해야하는예외 ) 1) 예외발생하지않은경우 2) 0 나누기를수행하여예외처리한경우 3) 배열의인덱스의범위를벗어난요소참조하는경우

import java.util.scanner; public class ExceptionExample { public static void main(string[] args) { Scanner rd = new Scanner(System.in); int divisor = 0; int dividend = 0; System.out.println(" 매개변수로받은두개의값 "); System.out.print("a = "); dividend = rd.nextint(); System.out.print("b = "); divisor = rd.nextint(); try { System.out.println("a 를 b 로나누면몫 : + dividend / divisor); System.out.println(" 나눗셈이수행되었습니다."); catch (ArithmeticException e) { System.out.println(e + " - 예외발생 "); finally{ System.out.println("***************************************"); System.out.println(); System.out.println(" 예외처리를끝내고 finally 문장을수행합니다.");

public class ExceptionExample { public static void main(string[] args){ System.out.println(" 매개변수로받은두개의값 "); try{ System.out.println(args[0]); catch(exception e){ System.out.println(e + " - 예외발생 "); finally{ System.out.println("**************************"); System.out.println(); System.out.println(" 예외처리를끝내고 finally 문장을수행 ");

예외처리를직접하지않고, 자신을호출한메소드에게예외를넘겨주 는방법 처리해야하는모든예외를하나의메소드에서처리하게할때유용 void 메소드이름 () throws 예외클래스 [, 예외클래스 ] { // 메소드내용 예 ) void a() throws ArithmeticException, NumberFormatException{ // 메소드내용

public static void a() throws Exception{ System.out.println("b() 메소드호출전 "); b(); System.out.println("b() 메소드호출후 "); System.out.println(" 메소드 a() 의 finally 블록수행."); public static void b() throws Exception{ System.out.println("c() 메소드호출전 "); c(); System.out.println("c() 메소드호출후 "); System.out.println(" 메소드 b() 의 finally 블록수행."); public static void c() throws Exception{ System.out.println(" a 를 b 로나눈몫 = " + (a/b)); System.out.println(" 메소드 c() 의 finally 블록수행.");

프로그램에서인위적으로예외발생가능 예외발생시키기위해 throw 문사용 throw 예외객체 ; 또는 throw new 예외객체타입 ( 매개변수 );

사용자는새로운예외를정의하여사용가능 새로운예외는 Exception 클래스로부터상속되어생성해야함 class UserException1 extends Exception { // 사용자정의예외는 Exception 클래스로부터상속 public UserException1(String message){ // 생성자메소드 super(message); // 상위클래스인 Exception 클래스의생성자를호출하여예외객체생성

출력결과는?

try-catch 문을이용하여정수를 0 으로나누려고할때 "0 으로나룰수없습니다." 라는경고메시지를출력하도록프로그램을작성하시오. import java.util.scanner; public class ExceptionExample2 { public static void main (String[] args) { Scanner rd = new Scanner(System.in); int divisor = 0; int dividend = 0; System.out.print(" 나뉨수를입력하시오 :"); dividend = rd.nextint(); System.out.print(" 나눗수를입력하시오 :"); divisor = rd.nextint(); try { System.out.println(dividend+" 를 "+divisor+" 로나누면몫은 "+ dividend/divisor+" 입니다."); catch (ArithmeticException e) { System.out.println("0으로나눌수없습니다."); ArithmeticException 예외발생 나뉨수를입력하시오 :100 나눗수를입력하시오 :0 0 으로나눌수없습니다.

public class ArrayException { public static void main (String[] args) { int[] intarray = new int[5]; intarray[0] = 0; try { for (int i = 0; i < 5; i++) { intarray[i+1] = i+1 + intarray[i]; System.out.println("intArray["+i+"]"+"="+intArray[i]); 배열의인덱스가범위를벗어날때발생하는 ArrayIndexOutOfBoundsException 을처리하는프로그램을작성하시오. i 가 4 일때 ArrayIndexOutOfBoundsException 예외발생 intarray[0]=0 intarray[1]=1 intarray[2]=3 intarray[3]=6 배열의인덱스가범위를벗어났습니다. catch (ArrayIndexOutOfBoundsException e) { System.out.println(" 배열의인덱스가범위를벗어났습니다.");

public class NumException { public static void main (String[] args) { String[] stringnumber = {"23", "12", "998", "3.141592"; try { for (int i = 0; i < stringnumber.length; i++) { int j = Integer.parseInt(stringNumber[i]); System.out.println(" 숫자로변환된값은 " + j); catch (NumberFormatException e) { System.out.println(" 정수로변환할수없습니다."); 문자열을정수로변환할때발생하는 NumberFormatException 을처리하는프로그램을작성하라. 3.141592 를정수로변환할때 NumberFormatException 예외발생 숫자로변환된값은 23 숫자로변환된값은 12 숫자로변환된값은 998 정수로변환할수없습니다.