Skip to content

Latest commit

ย 

History

History
93 lines (84 loc) ยท 3.75 KB

File metadata and controls

93 lines (84 loc) ยท 3.75 KB

์˜ˆ์™ธ ์ฒ˜๋ฆฌ

throws๋ฅผ ์‚ฌ์šฉํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • try catch ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋ฉ”์†Œ๋“œ ์„ ์–ธ๋ถ€์— throws ํ‚ค์›Œ๋“œ๋ฅผ ์„ ์–ธํ•˜์—ฌ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
public void fileIn(String path) throws IOException  {}
  • ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ฉ”์†Œ๋“œ์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ , ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ณณ์—์„œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • main()(๋ฉ”์ธ ํ•จ์ˆ˜)์—์„œ throws๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์ƒ๋จธ์‹ (JVM)์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค.

try{} catch(){} ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

try {
  // ์‹คํ–‰ํ•  ๊ตฌ๋ฌธ
} catch(Exception e)  { // ๋ฐœ์ƒํ•˜๋Š” Exception์„ ์•ˆ์— ์ ์–ด์ค€๋‹ค.
  // ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ตฌ๋ฌธ
} finally {
  // ์˜ˆ์™ธ์˜ ๋ฐœ์ƒ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋˜๋Š” ๊ตฌ๋ฌธ
}
  • ๋‹ค์ค‘ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
    • ์˜ˆ์™ธ์˜ ๊ฐ€์žฅ ์ƒ์œ„ Class์ธ Exception Class์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ catch๋ฌธ์— ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค.
    • ๋งŒ์ผ ๊ฐ€์žฅ ์ƒ๋‹จ์˜ catch๋ฌธ์— Exception์„ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ ํ•˜์œ„์—๋Š” Unreachable catch block์ด๋ผ๋Š” ์—๋Ÿฌ ๋ฌธ๊ตฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
// ์ •์ƒ์ ์ธ ๊ฒฝ์šฐ
try {
  ~~~
} catch(IOException ioe) {
  ~~~
} catch(ClassNotFoundException cnfe) {
  ~~~
} catch(Exception e) {
  ~~~
}
// Exception Class๋ฅผ ๊ฐ€์žฅ ์ƒ๋‹จ์˜ catch๋ฌธ์— ์„ ์–ธํ•œ ๊ฒฝ์šฐ
try {
  ~~~
} catch(Exception e) {
  ~~~
} catch(ClassNotFoundException cnfe) {  // Unreachable catch block for ClassNotFoundException.
  ~~~
} catch(IOException ioe) {    // Unreachable catch block for IOException.
  ~~~
}
  • ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ
    • JDK์—์„œ ์ œ๊ณตํ•˜๋Š” Exception Class์™ธ์— ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”์— ์˜ํ•ด Exception Class๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
    • Exception Class๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•˜๋Š” Exception Class๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
      public class IDFormatException extends Exception  {
        public IDFormatException(String message)  {
          super(message);
        }
      }
      
      public class IDFormatTest {
        public void setUserID(String userId) throws IDFormatException {
          if (userId == null) {
            throw new IDFormatException("ID๋Š” null์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")
          } else if(userId.length() < 8 || userId.length > 20)  }
            throw new IDFormatException("ID๋Š” 8์ž ์ด์ƒ 20์ž ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.")
          }
          
          this.userId = userId;
        }
        
        ~~~
      }
    

Stream

  • Input/Output ๊ธฐ์ค€ ๋ถ„๋ฅ˜ : ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ, ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ
  • ์ž๋ฃŒ์˜ ์ข…๋ฅ˜ ๊ธฐ์ค€ ๋ถ„๋ฅ˜ : ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ, ๋ฌธ์ž ์ŠคํŠธ๋ฆผ
  • ๊ธฐ๋Šฅ๋ณ„ ๋ถ„๋ฅ˜ : ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ, ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

Input/Output ๊ธฐ์ค€ ๋ถ„๋ฅ˜

  • Input Stream : ์ž๋ฃŒ๋ฅผ ์ฝ์–ด ๋“ค์ด๋Š” Stream
    (ex : FileInputStream, FileReader, BufferedInputStream, BufferedReader etc...)
  • Output Stream : ์ž๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” Stream
    (ex : FileOutputStream, FileWriter, BufferedOutputStream, BufferedWriter etc...)

์ž๋ฃŒ์˜ ์ข…๋ฅ˜ ๊ธฐ์ค€ ๋ถ„๋ฅ˜

  • Byte Stream : Byte ๋‹จ์œ„๋กœ ์ž๋ฃŒ๋ฅผ ์ฝ๊ณ  ์“ด๋‹ค.(๋™์˜์ƒ, ์Œ์•…ํŒŒ์ผ ๋“ฑ)
    (ex : FileInputStream, FileOutputStream, BufferedInputStream, BufferedOutputStream etc...)
  • Character Stream : 2Byte ๋‹จ์œ„๋กœ ์ž๋ฃŒ๋ฅผ ์ฝ๊ณ  ์“ด๋‹ค.
    (ex : FileReader, FileWriter, BufferedReader, BufferedWriter etc...)

๊ธฐ๋Šฅ๋ณ„ ๋ถ„๋ฅ˜

  • Base Stream : ๋Œ€์‚ฌ์• ์—๊ฒŒ ์ง์ ‘ ์ž๋ฃŒ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ธฐ๋Šฅ์˜ ์ŠคํŠธ๋ฆผ
    (ex : FileInputStream, FileOutputStream, FileReader, FileWriter etc...)
  • Object Stream : ์ง์ ‘ ์ฝ๊ณ  ์“ฐ๋Š” ๊ธฐ๋Šฅ์€ ์—†์ง€๋งŒ ์ถ”๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ์ฃผ๋Š” ์ŠคํŠธ๋ฆผ, ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์ด๋‚˜ ๋˜ ๋‹ค๋ฅธ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํฌํ•จํ•œ๋‹ค. (ex : InputStreamReader, OutputStreamWriter, BufferedInputStream, BufferedOutputStream etc...)

โ€ป ๋’ค์— Stream์ด ๋ถ™์œผ๋ฉด Byte Stream์ด๊ณ , Reader๋‚˜ Writer๊ฐ€ ๋ถ™์œผ๋ฉด Character Stream์ด๋‹ค.