자바 이상 설명

7100 단어 자바이상 하 다
1.이상 과 오류 의 차이
  이상 하 다 고 말 하기 전에 우 리 는 이상 과 잘못된 차 이 를 알 아야 한다.
  Error 클래스 와 Exception 클래스 의 부모 클래스 는 모두 throwable 클래스 입 니 다.그들의 차 이 는:
  Error 류 는 일반적으로 가상 컴퓨터 와 관련 된 문 제 를 말한다.예 를 들 어 시스템 붕괴,가상 컴퓨터 오류,메모리 공간 부족,방법 호출 스 택 넘 침 등 이다.이러한 오류 로 인 한 프로그램 중단,
프로그램 자체 만 으로 는 회복 과 예방 이 불가능 하 며,이러한 오류 가 발생 하면 프로그램 을 종료 시 키 는 것 을 권장 합 니 다.
  Exception 클래스 는 프로그램 이 처리 할 수 있 는 이상 을 표시 하고 캡 처 할 수 있 으 며 복구 할 수 있 습 니 다.이러한 이상 이 발생 하면 가능 한 한 이상 을 처리 하여 프로그램 이 운행 을 회복 하도록 해 야 지,함부로 이상 을 중지 해 서 는 안 된다.
2.이상 한 표현 분류:
  1.checked 이상 검사 기 이상 java.lang.Excetion 은 컴 파일 기간 에 인공 처리 가 필요 합 니 다.그렇지 않 으 면 컴 파일 에 실 패 했 습 니 다.Exception 의 하위 클래스 는 런 타임 이상 을 제외 하고 모두 검사 기 이상 입 니 다.
  2.Checked 이상 실행 시 이상 java.lang.Runtime Exception 처리 할 필요 가 없 는 직접 컴 파일 가능:모든 Runtime Exception 및 하위 클래스 가 이상 실행 중 입 니 다.

운행 기간 이상

결과:운행 기간 이 이상 합 니 다.코드 를 다 두 드 렸 을 때 오류 가 발생 하지 않 습 니 다.실행 할 때 만 0 으로 나 눌 수 없 는 오 류 를 보고 합 니 다.
예:검사 기간 이상:

결과:검사 기간 이상,컴 파일 할 때 오류 가 발생 합 니 다.이상 컴 파일 을 던 져 야 통과 할 수 있 습 니 다.
3.이상 한 처리 메커니즘
자바 언어 는 주로 try 에 의존한다.  catch  finally  throws  throw  다섯 개의 키워드 로 이상 을 묘사 하 다.
 1)이상 발생 시 직접 처리
  try catch finally 사용 하기  직접 처리 이상
  a)  try-catch-finally 구조 에서 try 블록 은 반드시 있어 야 합 니 다.catch 와 finally 블록 은 선택 할 수 있 지만 둘 중 하나 가 있어 야 합 니 다.
  b) catch  여러 개 를 동시에 나 타 낼 수 있 지만,한 개 이상 은 최대 한 개의 catch 를 잡 을 수 있 으 며,catch 의 순 서 는 위 에서 아래로
  c) finally  이상 캡 처 여부 와 상 관 없 이 실 행 될 코드 입 니 다.
데모 1:try 이상

public class TestException {
 public static void main(String[] args) {
  int c = 0;
  try
  {
   int a = 3;
   int b = 0;
   //          
   c = a / b;
   //                
   System.out.println("Hello World");
  }
  catch (ArithmeticException e)
  {
   System.out.println("      ");
  }
  finally
  {
   //         ,finally        
   System.out.println("Welcome");
  }
  System.out.println(c);
  //  b 0 ,   ,   c    0
 }
 }
 //    :       Welcome 0

try  
데모 2:return 이상

import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class DemoException {
 public static void main(String[] args) {
 int a=test3();
 System.out.println(a); 
 }
 @SuppressWarnings("finally")
 public static int test3(){
 try {
  System.out.println(9 / 0);
  return 1;
 } catch (Exception e) {
  System.out.println("      ....");
  return 2;
 }finally{ 
  System.out.println("           ...");
  return 3;
 }
 }
}
//     "  ""  " 3

  return  
결론:역할 범위   return  전체 방법 체 를 중지 하지만 finally 가 나타 나 기 전에  return 이 짱 이에 요.  최종 작용 범위>return
2)이상 을 호출 자 에 게 던 져 호출 자 에 게 처리 하도록 한다.

 //throws               ...
 public void dealFile() throws FileNotFoundException{
  FileInputStream fis =new FileInputStream("C:/name.txt");
 }
 //                     ,      
사례 1:throws 를 통 해 이상 을 던 지고 호출 자 는 이상 을 직접 포착 합 니 다.

public class TestException {
 public static void main(String[] args) {
   try {
   Test3(); //          ,        
   } catch (NumberFormatException e) {
   System.err.println("         。");
  } //System.err.println();               ,        。
  }
  public static void Test3() throws NumberFormatException{ 
   String s = "abc"; 
  System.out.println(Double.parseDouble(s)); 
  } 
 }

throws  
실행 결과:
비 데이터 형식 은 변환 할 수 없습니다.
메모:Throws 를 사용 하 는 것 은 제한 입 니 다.
두 가지 원칙
 throws 성명 을 사용 하여 이상 한 제한 을 던 집 니 다.
 하위 클래스 가 부 류 를 계승 하여 부 류 를 다시 쓰 는 방법
 하위 클래스 에서 던 지 는 이상 은 부모 클래스 보다 적어 야 합 니 다.
 하위 클래스 에서 던 지 는 이상 은 부모 클래스 보다 작 아야 합 니 다.
 두 가지 원칙 은 검사 기간 이상,운행 기간 이상 에 대해 이 규칙 을 따 르 지 않 는 다 는 것 이다(Runtime Exception 및 하위 클래스).
사례 2:throw 를 통 해 이상 던 지기

public class TestException {
 public static void main(String[] args) {
  String s = "abc"; 
  if(s.equals("abc")) { 
   throw new NumberFormatException("    ");
   } else { 
   System.out.println(s); 
  } 
  } 
 }

throw  
실행 결 과 는 다음 과 같 습 니 다.

면접 문제:Throw 와 Throws 는 어떤 차이 가 있 습 니까?
 Throw 문 구 는 방법 체 내 에서 던 진 이상 을 나타 내 는 방법 체 내의 문 구 를 처리 합 니 다.
 Throws  문 구 는 방법 성명 후에 이상 을 던 져 서 던 진 이상 을 호출 자 에 게 맡 기 는 것 이다.
 Throws 는 try Ccatch Cfinally 로 처리 하거나 계속 던 집 니 다.
4.사용자 정의 이상
사용자 정의 이상 이란 보통 하나의 클래스 를 정의 하여 Exception 클래스 나 하위 클래스 를 계승 하 는 것 입 니 다.예외 적 으로 Exception 류 를 직접 또는 간접 적 으로 계승 해 야 하기 때문이다.
통상 적 으로 Exception 류 에서 직접 계승 되 며,일반적으로 어떤 운행 시의 이상 류 를 계승 하지 않 는 다.
사용자 정의 이상 은 사용자 로그 인 오류,사용자 입력 오류 알림 등에 사용 할 수 있 습 니 다.
사용자 정의 이상 은 다음 절 차 를 따라 야 합 니 다.
  • RuntimeExcetion 계승  아니면 Exception
  • 4.567917.인삼 이 없 는 구조 함 수 를 쓴다.4.567918.
    4
  • String 형식의 구조 함 수 를 작성 합 니 다
  • 예:사용자 정의 이상:
    
     public class MyException extends Exception
    {
     public MyException()
     {
     super();
     } 
     public MyException(String message)
     {
     super(message);
     }
    }
    처리 이상 방식
    
    public class ExceptionTest4
    {
     public void method(String str) throws MyException
     {
     if(null == str)
     {
      throw new MyException("           null!");
     }
     else
     {
      System.out.println(str);
     }
     }
     public static void main(String[] args) throws MyException //      1,      
     {
     ExceptionTest4 test = new ExceptionTest4();
     test.method(null);
     }
    }
    
    다른 이상 처리 방법:
    
    public class ExceptionTest4
    {
     public void method(String str) throws MyException
     {
     if (null == str)
     {
      throw new MyException("           null!");
     }
     else
     {
      System.out.println(str);
     }
     }
     public static void main(String[] args)
     {
     //      2,  try...catch  
     try
     {
      ExceptionTest4 test = new ExceptionTest4();
      test.method(null);
     }
     catch (MyException e)
     {
      e.printStackTrace();
     } 
     finally
     {
      System.out.println("      ");
     }
     }
    }
    
    마지막 으로 한 마디 하 자 면 try-catch-finally 는 사용 하기 좋 지만 남용 이 라면 프로그램의 가 독성 을 엉망 으로 만 들 뿐 프로그램 이 잘못 보고 되면 빠 르 고 정확 한 포 지 셔 닝 을 할 수 없다.
    이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

    좋은 웹페이지 즐겨찾기