자바 소개 및 자바 에 대한 신속 한 이해(13)

finally 키워드 finally{...}finally 구문 블록 에 있 는 코드 는 어떻게 든 try 를 실행 합 니 다.catch 후 finally 블록 을 하나 더 따라 갈 수 있 습 니 다.finally 블록 에 있 는 코드 문 구 는 어쨌든(이상 이 있 든 없 든)실 행 됩 니 다.(finally 블록 은 일반적으로 자원 을 방출 하고 연결 을 닫 는 코드 를 씁 니 다.)finally 블록 에 있 는 코드 가 try 블록 에 있 는 코드 와 충돌 할 때 finally 블록 에 있 는 코드 는 반드시 실행 되 고 try 블록 에 있 는 코드 를 무시 합 니 다.그러나 System.exit(0);(가상 컴퓨터 종료 문)후 fianlly 의 코드 를 실행 하지 않 습 니 다.try{..}catch(..){..}try{..}catch(..){..}finally{..}try{..}finally{..}이상 세 가지 쓰기 가 가능 합 니 다.프로그램 에서 이상 을 던 지면 처리 해 야 합 니 다.throws 를 사용 하 든 포획 을 사용 하 든 try,catch 를 사용 하 든 이상 을 처리 하지 않 고 컴 파일 을 통과 하지 않 습 니 다.작 성 된 프로그램 에서 예외 가 발생 할 수 있 는 지 어떻게 알 수 있 습 니까?1.호출 방법 은 API 에서 검사 한 방법 에 오류 가 있 는 지 확인 합 니 다.2.컴 파일 과정 에서 알림 정 보 를 보고 해당 하 는 처 리 를 한다.Throwable 에는 message 속성 이 있 습 니 다.catch 를 사용 할 때 호출 할 수 있 습 니 다:try{...}Catch(IOException e){System.out.println(e.message();}//이상 한 정보 표시 try{...}Catch(IOException e){e.printStackTrace();}//이상 스 택 정 보 를 표시 하 는 printStackTrace()방법 은 이상 스 택 정 보 를 인쇄 하 는 데 자주 사용 되 는 이상 처리 방법 으로 이상 한 방법 입 니 다.위의 두 문장 은 모두 잘못된 정 보 를 인쇄 할 수 있다.오류 유형 과 코드 의 운행 과정 을 알려 주 십시오.디 버 깅 에 매우 유용 합 니 다.예:
public class TestHundredException{
public static void main(String[] args){
MyClass mc=new MyClass();
try{//   try              
System.out.println(mc.add(10,80));
}
catch(HundredException e){
//  try       
e.printStackTrace();
}
try{
System.out.println(mc.add(30,70));
}
catch(HundredException e){
e.printStackTrace();
}finally{
System.exit(0);
}
}
}
class HundredException extends Exception{//     
public HundredException(String message){
super(message);
}
}
class MyClass{
public int add(int a,int b) throws HundredException{
int c=a+b;
if (c==100) {
throw new HundredException("a+b can\'t be 100");
}else{
return c;
}
}
}

결 과 는:
 90com.sdjt.study.corejava.HundredException: a+b can't be 100 at com.sdjt.study.corejava.MyClass.add(TestHundredException.java:36) at com.sdjt.study.corejava.TestHundredException.main(TestHundredException.java:18)
 
사용자 정의 이상 사용자 정의 이상 이 Exception 의 하위 클래스 라면 다음 과 같은 예 입 니 다.이상 류 를 정의 하려 면 Exception 이나 Runtime Exception 의 하위 클래스 가 필요 합 니 다.
public class TestMyException{
public static void main(String[] args){
int n=Integer.parseInt(args[0]);
A a=new A();
try{
a.calculate(n);
}
catch(Exception e){
e.printStackTrace();
}
System.out.println("OK");
}
}
class A{
public void calculate(int n) throws ZhiShuException{
for(int i=2;i<n;i++){
if (n % i == 0) return;
}
throw new ZhiShuException(n+" is a Prime Number");
}
}
class ZhiShuException extends Exception{//      , Exception   
public ZhiShuException(String message){
//            String   message    
super(message);
}
}

 결과:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at.com.sdjt.study.corejava.TestMyException.main(TestMyException.java:9)개발 중의 두 가지 이치:① try 블록 의 범 위 를 어떻게 제어 하 는 지:작업 의 연동 성과 상관 성에 따라 앞의 프로그램 코드 블록 이 던 진 이상 이 뒤의 프로그램 코드 의 운행 에 영향 을 주 었 습 니 다.이 두 개의 프로그램 코드 는 관련 이 있 으 므 로 같은 try 블록 에 두 어야 합 니 다.② 이미 발 견 된 예외 에 대해 서 는 throw(소극 적)와 try{...}catch(...){...}(적 극 적)두 가지 처리 방법 이 있 습 니 다.throws 에 이상 을 trycatch 에 던 지면 이상 을 적절하게 처리 할 수 있 는 위치(즉,이 이상 을 처리 할 수 있 는 능력 을 갖 춘 위치 에 두 는 것).이상 을 처리 할 능력 이 없 으 면 이상 을 계속 던 집 니 다.throw 는 예외 적 인 기능 을 던 지 는 데 사용 되 는 문구 입 니 다.throws 는 이 방법 에서 이상 하 게 던 질 수 있 음 을 나타 내 며,이 방법 은 처리 하지 않 고 이상 대상 을 위로 던 집 니 다.throws 는 이상 유형 을 썼 고 throw 후 던 질 이상 대상 을 썼 습 니 다.주의:방법의 덮어 쓰기 에서 하위 클래스 의 방법 이 던 지 는 예외 가 부모 클래스 방법 이 던 지 는 예외 적 인 부모 형식 이 라면 컴 파일 오류 가 발생 합 니 다.하위 클래스 는 부모 클래스 를 덮어 쓸 수 없습니다.결론:부류 방법 은 부류 방법 보다 더 많은 예 외 를 던 져 서 는 안 된다.하위 클래스 가 던 지 는 예외 나 부모 클래스 가 던 지 는 예외 와 일치 하거나 부모 클래스 가 예외 적 인 하위 유형 을 던 집 니 다.또는 하위 유형 은 예 외 를 던 지지 않 습 니 다.부모 형식 이 throws 가 없 을 때 하위 형식 도 throws 가 나타 나 지 않 습 니 다.이 때 는 try catch 만 사용 할 수 있 습 니 다.단언 은 디 버 깅 도구(assert)의 뒤 를 따 르 는 불 형식의 표현 식 입 니 다.표현 식 결과 가 프로그램 실행 에 영향 을 주지 않 는 다 면.가짜 시스템 에 저급 오류 가 발생 하면 화면 에 assert 정보 가 나타 납 니 다.Assert 는 디 버 깅 에 만 사 용 됩 니 다.제품 컴 파일 이 끝 난 후 온라인 assert 코드 가 삭제 되 었 습 니 다.

좋은 웹페이지 즐겨찾기