ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 getStackTrace를 통한 처리내용
    프로그래밍 JAVA 2020. 8. 11. 22:06

    콘솔에 있는 정보 getStackTrace() 방법을 통해 프로그래밍 방식 액세스 제공


    printStackTrace()에서 출력한 스택 추적 정보.
    14.6을 나열하면 예외를 표시하기 위해 던지기능의 방법을 사용하는 예가 된다.
    정보 라인 4는 배열의 모든 원소의 합을 반환하기 위해 합계 방법을 호출한다.
    23행에 IndexOutOfBoundsException의 하위 클래스인 ArrayIndexOutOfBoundsException을 발생시키는 오류가 있다. 이 예외는 try-catch 블록에서 발견된다.
    7, 8, 9호선에는 다음과 같이 printStackTrace(), getMessage() 및 toString() 방법을 사용하여 스택 추적, 예외 메시지 및 예외 개체와 메시지가 표시된다.
    그림 14.5와 같다. 12호선은 스택 추적 원소를 배열로 가져온다. 각 요소는 메서드 호출을 나타낸다. 방법(라인 14), 클래스 이름(라인 15), 예외를 얻을 수 있다.
    각 요소에 대한 라인 번호(라인 16).
    합계를 내다.
    printStackTrace()
    printStackTrace()
    getMessage()
    토스트링()
    사용
    getStackTrace()
    그림 14.5 printStackTrace(), getMessage(), toString() 및
    getStackTrace() 메서드를 사용하여 예외 개체로부터 정보를 얻으십시오.
    getMessage()
    토스트링()
    LISTING 14.6 TestException.java
    1개의 공용 클래스 TestException {
    2개의 공용 정적 보이드 주(String[] args) {
    3번 시도 {
    4 System.out.println( );
    5 }
    6 캐치(예외 ex) {
    7 ex.printStackTrace();
    8 System.out.println("\n" + ex.getMessage();
    9 System.out.println("\n" + ex.toString();
    10
    11 System.out.println("\nTrace Info GetStackTrace"에서 획득);
    12 StackTraceElement[] traceElements = ex.getStackTrace();
    13 for (i = 0; i < traceElements.length; i++) {
    14 System.out.print("방법 " + traceElements[i]).getMethodName();
    15 System.out.print("(") + traceElements[i.getClassName() + ":";
    16 System.out.println(추적 요소[i])getLineNumber() + "";
    17 }
    18 }
    19 }
    20
    21 private static intsum(int[] list) {
    22 int 결과 = 0;
    23 for (i = 0;;; i++) i <= list.length
    합(new int[] {1, 2, 3, 4, 5})
    14.4 예외 처리 531에 대한 추가 정보
    24 결과 += list[i];
    25 반환 결과
    26 }
    27 }
    14.4.5 예: 예외 선언, 던지기 및 포착
    이 예는 다음을 수정하여 예외를 선언하고 던지고 포착하는 것을 보여준다.
    Listing 8.9, CircleWithPrivateDataFields.java의 Circle 클래스에서 setRadius 메서드.
    새로운 setRadius 방법은 반경이 음수일 경우 예외를 둔다.
    14.7 목록에는 CircleWithException이라는 새로운 서클 클래스가 정의되며, 이는 동일하다.
    setRadius(double newRadius)를 제외하고 CircleWithPrivateDataFields로 사용
    메소드는 불법적인 주장을 던진다.newRadius 인수가 음수일 경우 예외.
    14.7 CircleWithException.java 목록


    1개의 공용 클래스 CircleWithException {
    2 /** 원의 반지름 */
    3개인 이중 반지름
    4
    5 /** 생성된 개체 수 */
    6개의 개인 정적 int 번호OfObjects = 0;
    7


    8 /** 반지름 1 */로 원 구성


    9 CircleWithException() {
    10 this(1.0);
    11 }
    12
    13 /*** 지정된 반지름을 가진 원 구성 */
    14 CircleWithException(double newRadius) {
    15
    16 NumberObjects++;
    17 }
    18
    19 /** 반환 반지름 */
    20 공개 더블 getRadius() {
    21 반환 반지름
    22 }
    23
    24 /** 새 반지름 설정 */
    25 공공 보이드 setRadius(double newRadius)
    26 {
    27 if (newRadius >= 0)
    28 반지름 = newRadius;
    그 밖에 29
    30
    31
    32 }
    33
    34 /** 반환 개체 수 */
    35 public static int getNumberOfObjects() {
    36 return numberOfObjects;
    37 }
    38
    39 /*** 이 원의 영역 반환 */
    40 공용 이중 findArea() {
    41 반환 반지름 * 반지름 * 3.14159;
    42 }
    43 }
    "라디우스는 음수가 될 수 없다";
    새로운 불법 주장을 펴다예외().
    불법적인 주장을 던지다예외
    setRadius(newRadius);
    예외를 선언하다
    예외를 두다
    532장 14장 예외 처리 및 텍스트 I/O
    새로운 서클 클래스를 사용하는 테스트 프로그램은 Listing 14.8에 주어진다.
    14.8 TestCircleWithException.java 목록
    1개의 공용 클래스 TestCircleWithException {
    2개의 공용 정적 보이드 주(String[] args) {
    3
    4 CircleWithException c1 = 새로운 CircleWithException(5);
    5 CircleWithException c2 = 새로운 CircleWithException(-5);
    6 CircleWithException c3 = 새로운 CircleWithException(0);
    7
    8
    9 System.out.println(ex);
    10
    11
    12 System.out.println("생성된 개체 수: " +

    3 CircleWithException.getNumberOfObjects();
    14 }
    15 }
    }
    (불법 논쟁)을 잡다예외 ex) {
    }


    {을 시험해 보다.


    해보다
    잡히다
    자바.의언페러그먼트예외: 반지름은 음수일 수 없음
    생성된 개체 수: 1
    클래스 이름이 다음으로 변경된 경우를 제외하고 원래 Circle 클래스는 그대로 유지됨
    CircleWithException, 새로운 생성자 CircleWithException(newRadius)은
    추가, 그리고 setRadius 방법은 이제 예외를 선언하고 반경이 다음과 같을 경우 그것을 던진다.
    부정의
    setRadius 방법은 FailedArgument를 던지겠다고 선언한다.방법의 예외
    헤더(CircleWithException.java의 25-32행). CircleWithException 클래스는
    FailedArgument를 던지면 여전히 컴파일한다.예외 조항이 에서 제거됨
    런타임의 하위 클래스이므로 메서드 선언예외 및 모든 방법은 다음과 같이 할 수 있다.
    런타임 던지기예외(선택되지 않은 예외) 레지아

    댓글

Designed by Tistory.