슬라이드 1

Similar documents
슬라이드 1

Cluster management software

JAVA PROGRAMMING 실습 09. 예외처리

歯JavaExceptionHandling.PDF

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

PowerPoint Presentation

C++ Programming

PowerPoint 프레젠테이션

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

PowerPoint Presentation

Microsoft PowerPoint - CSharp-10-예외처리

9장.예외와 단정

PowerPoint Template

Semantic Consistency in Information Exchange

No Slide Title

슬라이드 1

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

12-file.key

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

슬라이드 1

Network Programming

JAVA PROGRAMMING 실습 08.다형성

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Design Issues

슬라이드 1

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

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

제11장 프로세스와 쓰레드

PowerPoint Presentation

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

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

PowerPoint 프레젠테이션

rmi_박준용_final.PDF

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

02 C h a p t e r Java

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

PowerPoint Presentation

PowerPoint 프레젠테이션

FileMaker ODBC and JDBC Guide

Microsoft PowerPoint - 03-TCP Programming.ppt

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

예제 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

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - RMI.ppt

PowerPoint 프레젠테이션

Chap12

FileMaker ODBC and JDBC Guide

JUNIT 실습및발표

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

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - 2강

PowerPoint Presentation

Spring Boot

자바-11장N'1-502

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

PowerPoint Presentation

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

JAVA PROGRAMMING 실습 02. 표준 입출력

WS12. Security

PowerPoint Presentation

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

슬라이드 1

제목

JAVA PROGRAMMING 실습 02. 표준 입출력

비긴쿡-자바 00앞부속

PowerPoint 프레젠테이션

JMF2_심빈구.PDF

슬라이드 1

쉽게 풀어쓴 C 프로그래밊

교육자료

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

슬라이드 1

Java ...

자바 프로그래밍

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

Java

쉽게 풀어쓴 C 프로그래밍

JMF3_심빈구.PDF

10. 예외처리 예외는어떤방법으로든지해결되어야합니다. 직접해결하기위해서는 try~catch 구문을사용할수도있으며 throws 구문을통해예외가발생했을때호출한메서드로예외를넘겨줄수도있습니다. 이장에서는예외의종류와예외처리방법, 사용자정의예외클래스와예외를발생시키는방법들에대해설명

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

쉽게

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Spring Boot/JDBC JdbcTemplate/CRUD 예제

슬라이드 1

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - Java7.pptx

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

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

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

12-file.key

mytalk

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Transcription:

11. 예외처리 학습목표 음악재생프로그램예외처리방법 try/catch 블록예외선언방법

위험한행동 예상치못한상황 파일이없는경우 서버가다운되는경우 장치를사용할수없는경우 이런예외적인상황을처리하기위한방법이필요합니다. 자바의예외처리메커니즘 try/catch 블록 예외선언

음악재생프로그램

JavaSound API JavaSound API MIDI 악기디지털인터페이스 (Musical Instruments Digital Interface) Sampled

Sequencer import javax.sound.midi.*; public class MusicTest1 { public void play() { Sequencer sequencer = MidiSystem.getSequencer(); System.out.println( We got a sequencer ); public static void main(string[] args) { MusicTest1 mt = new MusicTest1(); mt.play(); % javac MusicTest1.java MusicTest1.java:5: unreported exception javax.sound.midi.midiunavailableexception; must be caught or declared to be thrown Sequencer sequencer = MidiSystem.getSequencer(); ^ 1 error

위험요소가있는메소드 프로그래머프로그래머가만든코드코드에서사용하는메소드가들어있는클래스

예외처리메커니즘 예외 (exception) 프로그램실행중에생길수있는특이한상황 예외처리 (exception handling) 메커니즘 오류처리코드를한군데로모아놓을수있기때문에코드가깔끔해지고효율적이됩니다.

try/catch 블록 예외를처리할것임을알려주기위한용도로쓰임 import javax.sound.midi.*; public class MusicTest1 { public void play() { try { Sequencer sequencer = Midisystem.getSequencer(); System.out.println( Successfully got a sequencer ); catch (MidiUnavailableException ex) { System.out.println( Bummer ); public static void main(string[] args) { MusicTest1 mt = new MusicTest1(); mt.play();

Exception 클래스 try { // 위험한일처리 catch (Exception ex) { // 문제해결 Throwable getmessage() printstacktrace() Exception IOException InterruptedException

예외던지기와잡기 예외를던지는코드 public void takerisk() throws BadException { if (abandonallhope) { throw new BadException(); 위험한메소드를호출하는코드 public void crossfingers() { try { anobject.takerisk(); catch (BadException ex) { System.out.println( Aaargh! ); ex.printstacktrace();

확인예외 확인예외 (checked exception) RuntimeException 을제외한모든예외 코드에서예외를던진다면반드시메소드를선언하는부분에서 throws 키워드를써야함 예외를던지는메소드를호출하면 try/catch 블록으로그부분을감싸거나그메소드에서도예외를선언해야함

바보같은질문은없습니다. NullPointerException, DivideByZero 같은예외에대해서는왜 try/catch 블록을사용하지않나요? RuntimeException 및그하위클래스에속하는예외는컴파일러에서잡아내지않습니다. 런타임예외는실행중에어떤조건에문제가생기는경우보다는코드의논리에예측 / 예방할수없는방식으로문제가생기는경우에발생합니다. try/catch 블록은예외적인상황을처리하기위한것이지코드의문제점을보완하기위한것은아닙니다.

try/catch 블록의흐름제어 try { Foo f = x.doriskything(); int b = f.getnum(); catch (Exception ex) { System.out.println( failed ); System.out.println( We made it! ); % java Tester We made it! % java Tester failed We made it!

무조건실행할내용 예외발생여부와상관없이무조건실행할코드는 finally 블록에... try { turnovenon(); x.bake(); catch (BakingException ex) { ex.printstacktrace(); finally { turnovenoff(); try { turnovenon(); x.bake(); turnovenoff(); catch (BakingException ex) { ex.printstacktrace(); turnovenoff();

두개이상의예외 예외를여러개던진다면모든확인예외를잡아야합니다. public class Laundry { public void dolaundry() throws PantsException, LingerieException { // 두가지예외를던질수있는코드 public class Foo { public void go() { Laundry laundry = new Laundry(); try { laundry.dolaundry(); catch (PantsException pex) { catch (LingerieException lex) {

예외와다형성 public void dolaundry throws ClothingException { Exception ClothingException catch (ClothingException cex) { PantsException LingerieException ShirtException catch (ShirtException sex) { TeeShirtException DressShirtException

작은것부터큰것으로 try { laundry.dolaundry(); catch(teeshirtexception tex) { catch(lingerieexception lex) { catch(clothingexception cex) {

예외선언 try/catch 블록을쓰는대신메소드에서예외를선언함으로써예외처리를회피하는방법도있습니다. public void foo() throws ReallyBadException { // try/catch 블록없이위험한메소드호출 laundry.dolaundry();

예외선언 public class Washer { Laundry laundry = new Laundry(); public void foo() throws ClothingException { laundry.dolaundry(); public static void main(string[] args) throws ClothingException { Washer a = new Washer(); a.foo(); dolaundry() foo() main() foo() main() main()

다시음악코드로 import javax.sound.midi.*; public class MusicTest1 { public void play() { try { Sequencer sequencer = MidiSystem.getSequencer(); System.out.println( Successfully got a sequencer ); catch(midiunavailableexception ex) { System.out.println( Bummer ); public static void main(string[] args) { MusicTest1 mt = new MusicTest1(); mt.play();

예외와관련된규칙 1. try 없이 catch 나 finally 만쓸수는없음 void go() { Foo f = new Foo(); f.foof(); catch(fooexception ex) { 2. try 와 catch 사이에코드를집어넣을수없음 try { x.dostuff(); int y = 43; catch(exception ex) {

예외와관련된규칙 3. try 뒤에는반드시 catch 나 finally 가있어야함 try { x.dostuff(); finally { 4. try 뒤에 finally 만있으면예외선언 void go() throws FooException { try { x.dostuff(); finally {

JavaSound API 음악을재생하는장치 Sequencer 재생할음악 Sequence 실제정보가들어있는부분 Track 실제음악정보 MidiEvent

JavaSound API 1. 시퀀서만들고열기 Sequencer player = MidiSystem.getSequencer(); 2. 새로운시퀀스만들기 Sequence seq = new Sequence(timing, 4); 3. 시퀀스에서새로운트랙가져오기 Track t = seq.createtrack(); 4. 트랙에 MidiEvent 를채우고시퀀스를시퀀서에넘기기 t.add(mymidievent1); player.setsequence(seq); 5. 시퀀서에대해 play() 메소드호출 player.start();

MidiEvent 1. Message 만들기 ShortMessage a = new ShortMessage(); 2. 메시지에지시사항넣기 a.setmessage(144, 1, 44, 100); 메시지유형 음높이 3. 새로운 MidiEvent 만들기 MidiEvent noteon = new MidiEvent(a, 1); 채널 속도 4. MidiEvent 를트랙에추가 track.add(noteon);

숙제 본문을꼼꼼하게읽어봅시다. 연필을깎으며및 11 장끝에있는연습문제를모두각자의힘으로해결해봅시다. API 문서에서이장에나와있는클래스및메소드에대한내용을직접찾아봅시다.