
Java 面接 族譜 整理 (16日次)
1. throws에 對하여 說明하시오。
public static void m2() throws IOException {
…
}
- 메소드 內에서 文章을 實行하는 過程에서 該當 誤謬가 發生할 수 있다는 意味
- 萬若 函數에서 例外狀況의 問題가 생기게 되면 throws Exception을 自己自身을 呼出한 函數한테 던진다。(例外處理를 떠넘긴다。)
→ try catch가 없는 境遇 메인 메소드까지 넘어가서 메인 메소드가 最終的으로 JVM으로 넘기는 것도 可能하다。
(하지만 그 前에 try catch로 例外處理를 直接하는 것이 좋다。)
- 둘 以上의 例外를 넘길 때는 ,(콤마)로 區分한다。
2. checked와 unchecked Exception을 설명하시오
- Exception의 subclass인 unchecked Exception은(=RuntimeException)例外處理를 해야한다고 強制하지 않는다。(런타임에 체크)
- 하지만 Exception의 subclass인 checked Exception은 必히 프로그래머가 例外處理를 하지 않으면 프로그램 作成中에 이미 빨간줄로 에러 表示가 떠서 進行할 수 없게 된다。
3. 下段의 內容이 컴파일 誤謬가 發生하는 理由에 對하여 說明하시오。
try {
int num = 6 / 0;
} catch (Exception e) {
e.printStackTrace();
} catch (InputMismatchException e) {
e.printStackTrace();
}
Exception이 InputMismatchException보다 上位클래스에 位置하고 있으므로 모든 例外 狀況을 체크할 수 있다。
그래서 여기에서 모든 例外가 處理되기 때문에 細部체크를 하는 InputMismatchException이나 ArithmeticException 等이 그 아래 catch로 온다면 事實上 그 文章을 通過할 일이 없기 때문에 不必要한 코드임을 알려주기 爲해 誤謬가 난다。
!!多形性(Polymorphism)이 核心!!
4. try - catch - finally 에 對하여 說明하시오。
- try catch finally가 例外處理의 基本的인 文章構成이다。
- 實行의 흐름이 try構文 內에 들어왔을 때 必히 實行해야하는 文章을 finally構文에 둘 수 있다。
→ finally는 앞의 try-catch에서 成功을 하든 失敗를 하든 必히 通過해야한다。
- write나 scanner 等은 必히 close 해줘야하는 것이라서 써주는 것이다。
→ 하지만 必히 處理해야하는 文章에서도 誤謬가 發生할 수 있어서 finally文章 內에서 try catch를 해줄 수도 있다。
- finally構文 使用例示 → 있으면 絶對 타게 되어있다。