Oracle Java 학습서에서 "논쟁"이라고하는 확인 된 및 확인되지 않은 예외가 왜 발생합니까?


10

나는 Java를 처음 사용 하고 예외에 대한 문서를 읽고있었습니다 . , 특히 확인되지 않은 예외-논쟁 페이지.

결론은 다음과 같습니다.

클라이언트가 예외로부터 적절히 복구 될 것으로 예상되는 경우이를 확인 된 예외로 만듭니다. 클라이언트가 예외에서 복구 할 작업을 수행 할 수 없으면 검사되지 않은 예외로 만드십시오.

기사를 이해하지 못합니다. “논쟁”이란 무엇입니까? 간단한 단어로 설명 할 수 있습니까?




업데이트 된 질문을 참조하십시오, 나는 이것이 중복이라고 생각하지 않습니다 :)
ABcDexter

3
"나는 그것을 읽으려고 노력했다" -무슨 일이 있었나요?
쓸모없는

2
그 주제에 관해 많은 논란이 있기 때문에 그렇게 불립니다. 이 StackOverflow 질문 : 유명한 / 영향력있는 사람들의 인용문을 언급 한 예외에 대한 사례
Hulk

답변:


3

먼저 예를 들어 보겠습니다. (마지막으로 논쟁의 이유는 답변입니다.)

Java 기반 문서 편집기에서 문서를 편집하고 완료 한 후 파일-> 다른 이름으로 저장 ...을 선택하고 쓰기 권한이없는 볼륨에 문서를 저장하기로 선택했다고 가정 해 봅시다. 편집기는 추악한 스택 추적으로 충돌하지 않으며 파일을 저장할 수 없으며 다른 위치로 편집 및 / 또는 저장을 계속할 수 있음을 알려줍니다.

그러한 경우에는 아마도 확인 된 예외가 예상되어 잡히고 그로부터 은혜롭게 회복하기 위해 행동했을 것입니다.

반면에 특정 조건에서만 못생긴 머리를 키우는 프로그래밍 오류로 인해 0으로 나누거나 널 포인터 예외로 가정하십시오. 코드의 어느 곳에서나 RAM이 손상 될 수 있습니다. 어떤 API doc도 "RAM이 손상된 경우이 방법은 0으로 나누기를 던질 것" 이라고 말하지 않습니다 .

확인 된 예외는 디자인의 일부 여야하며 해당 API 사용자는 예외 처리를 준비해야합니다. 확인되지 않은 예외는 거의 모든 곳에서 발생할 수 있으며 통제 할 수 없습니다.

확인 된 예외를 사용해야 할 때 확인되지 않은 예외를 사용 하는 프로그래머 (런타임 예외에서 연장)로부터 논란이 발생합니다 .

  • 컴파일러에 의해 방해받지 않는 shorcut으로서
  • 서명이 더 단순 해 보이도록
  • 확인 된 예외는 종속성 문제라고 생각하기 때문에 (구현 클래스에서 새로 확인 된 예외를 throw하면 인터페이스의 서명을 수정해야합니다) 그 반대도 마찬가지입니다.

"인터페이스의 서명을 수정해야합니다"-글쎄, 심지어 컴파일러에 의해서도 그렇게해야하며, 각 호출 사이트에서 발생하도록 처리하거나 선언해야합니다.
헐크

3
UI 응용 프로그램이 사용자에게 친숙한 방식으로 오류를 올바르게 처리하는지 여부는 프로그래머가 코드를 얼마나 잘 작성했는지에 따라 결정됩니다. 다른 사람이 확인 된 예외로 오류를 부적절하게 처리 할 수있는 것처럼 확인되지 않은 예외로 코드를 올바르게 작성할 수 있습니다. 확인 된 예외 의 목적 은 프로그래머가 오류를 올바르게 처리하기 쉽도록하기위한 것입니다. 논란은 여기에서 주장한 것이 아니라 실제로 오류 처리를 더 쉽게 만드는 목표를 성공적으로 달성했는지 여부입니다. 많은 사람들의 견해로는 그렇지 않습니다. 그들은 그것을 더 어렵게 만듭니다.
Servy

@Servy UI 앱은 RAM 칩 오류 또는 다른 소프트웨어가 오작동하여 CPU 사이클이없는 상태를 처리 할 수있는 사용자 친화적 인 방법은 무엇입니까?
Tulains Córdova

1
@ TulainsCórdova 두 경우 모두 프로그램이 실행 되지 않으므로 예외 처리 기간 이 없으므로 오류를 표시하려고 시도하는 방법은 발생할 때 코드.
Servy

1
@ TulainsCórdova 당신은 반드시 그것을 처리하기 위해 오류가 발생할 필요는 없지만 그렇습니다. 논쟁은 예외를 던질 수 있다고 컴파일러가 알려주는 것이 실제로 도움이되는지 여부입니다. 어떤 사람들은 그렇지 않다고 생각합니다. 여기서의 문제 는 논란무엇인지 , 그리고 그 답입니다. 확인 된 예외의 핵심 논쟁에 대한 귀하의 진술은 아닙니다.
Servy

-4

해당 페이지에는 논쟁이 없습니다. 사람들에게 확인 된 예외를 사용하도록 말하는 것은 Oracle입니다.

그들이 발명 한 가짜 '논쟁'은 언어 디자이너와 언어 사용자 사이에 있습니다. 디자이너는 사람들이 던지거나 붙잡아서는 안되는 물건을 던지고 붙잡을 수 있도록했습니다. 그래서 그들은 게으른 개발자에 대해 불평하는 웹 페이지를 만들었습니다.


4
입니다 해당 페이지는 그것에 대해 조금 말한다하더라도 논쟁. 논란의 여지가있는 것은 "예외를 확인하면 더 나은 소프트웨어의 개발을 방해하거나 방해 하는가?"라는 질문에 대한 답입니다. 그리고 "그렇다면 어떤 예외를 점검하고 어떤 예외를 점검하지 않아야합니까?" 이 질문에 답할 수있는 충분한 개발자 (및 맥주)가있는 방에 모이면 활발한 토론을 시작할 수 있습니다.
솔로몬 느린
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.