>Java >java지도 시간 >프로그래밍 언어의 예외 메커니즘

프로그래밍 언어의 예외 메커니즘

零下一度
零下一度원래의
2017-07-27 17:04:211565검색

개요

                                                                                                                                                         소프트웨어나 정보 시스템의 비정상적인 조건(즉, 프로그램의 정상적인 실행 흐름을 초과하는 일부 특수 조건)을 처리하는 데 사용되는 것은 프로그래밍 언어나 컴퓨터 하드웨어의 메커니즘입니다. 다양한 프로그래밍 언어는 예외 처리에 있어 매우 중요한 차이를 가지고 있습니다(오류 감지와 예외 처리의 차이점은 오류 감지는 호출 작업이 성공적으로 끝나지 못하는 등 정상적인 프로그램 흐름에서 예상치 못한 문제를 처리하는 코드입니다). 일부 프로그래밍 언어에는 입력에 잘못된 데이터가 포함되어 있거나 반환 값을 예외와 효과적으로 구분할 수 없는 경우 안전하게 호출할 수 없는 함수가 있습니다. 예를 들어 C 언어의 atoi 함수(ASCII 문자열을 정수로 변환)는 입력이 잘못된 경우 0을 반환할 수 있습니다. 이 경우 프로그래머는 추가 오류 감지(아마도 C의 errno와 같은 일부 보조 전역 변수를 통해) 또는 입력 확인(예: 정규 표현식을 통해)을 수행하거나 두 방법을 조합하여 사용해야 합니다.

예외 처리를 통해 프로그램 내에서 잘못된 입력을 사용자에게 제어하고 프롬프트하여 프로그램 충돌을 방지할 수 있습니다.

프로세스 관점에서 하드웨어 인터럽트는 복구 가능한 예외와 동일하지만 일반적으로 인터럽트는 프로그램 흐름 자체와 관련이 없습니다.

서브루틴 프로그래머의 관점에서 볼 때 예외는 서브루틴이 정상적으로 실행될 수 없음을 외부 세계에 알리는 데 매우 유용한 메커니즘입니다. 입력한 데이터가 유효하지 않거나(예: 제수가 0인 경우) 필요한 리소스를 사용할 수 없는 경우(예: 파일이 누락된 경우) 시스템에 예외 메커니즘이 없는 경우 프로그래머는 반환 값을 사용하여 발생한 오류를 표시해야 합니다. [1]

프로그래밍 언어의 예외 메커니즘

Actionscript, Ada, BlitzMax, C++, C#, D, ECMAScript, 에펠, Java, ML, Object Pascal(예: Delphi, Free Pascal 등)을 포함한 많은 일반적인 프로그래밍 언어 ), Objective-C, Ocaml, PHP(버전 5), PL/1, Prolog, Python, REALbasic, Ruby, Visual Prolog 및 대부분의 .NET 프로그래밍 언어에 내장된 예외 메커니즘은 함수 호출 스택을 따릅니다. 함수 호출은 다음과 같습니다. 예외 처리 코드가 나타날 때까지 뒤로 검색됩니다. 일반적으로 스택 해제는 이 예외 처리 코드의 검색 프로세스 중에 단계별로 완료됩니다. 그러나 Common Lisp는 예외입니다. 스택 롤백을 사용하지 않으므로 예외가 처리된 후 예외가 발생한 위치에서 실행을 재개할 수 있습니다. Visual Basic(특히 6.0과 같은 .net 이전 버전)에서는 더 나아가 on error 문을 사용하여 예외가 발생한 후 재시도(재개), 건너뛰기(다음 재개) 또는 프로그래머 실행 여부를 쉽게 지정할 수 있습니다. 오류 처리기(goto ***). [1]

대부분의 언어에서 예외 메커니즘의 구문은 유사합니다. 예외 개체(Java 또는 C++ 등) 또는 특수 확장 가능한 열거형 값(예: Ada 언어)을 발생시키려면 throw 또는 raise를 사용하세요. 예외 처리 코드 범위는 mark 절(try 또는 start로 시작하는 언어 범위)로 시작을 표시하고 첫 번째 예외 처리 절(catch, Except, 이력서 등)로 끝을 표시합니다. 여러 예외 처리가 연속적으로 발생할 수 있습니다. 절은 각각 특정 유형의 예외를 처리합니다. 일부 언어에서는 예외가 발생하지 않는 상황에 대해 else 절을 ​​허용합니다. 더 일반적인 것은 예외 발생 여부에 관계없이 실행되고 예외 처리에 필요한 일부 리소스를 해제하는 데 사용되는 finally, verify 절입니다. [1]

C++ 예외 처리는 Resource-Acquisition-Is-Initialization의 기초입니다. [1]

C 언어는 일반적으로 예외 처리를 지원하지 않는 것으로 간주됩니다. Perl 언어는 선택적으로 구조적 예외 처리를 지원합니다. [1]

Python 언어는 예외 처리 메커니즘에 대해 매우 일반적이고 심층적이므로 try 및 Except 없이 프로그램을 작성하기가 매우 어렵습니다. [1]


용어 설명

예외 처리는 영어로 예외 처리라고도 알려져 있으며 감소하는 오류 코드 방법을 대체하고 오류 코드가 제공할 수 없는 구체적인 이점을 제공하는 새로운 방법입니다. 예외 처리는 오류 코드 수신과 처리를 분리합니다. 이 기능은 프로그래머의 생각을 명확하게 하고 코드의 가독성을 높여 유지관리자가 더 쉽게 읽고 이해할 수 있도록 도와줍니다.

예외 처리(오류 처리라고도 함) 기능은 프로그램이 실행되는 동안 발생하는 예상치 못한 상황이나 비정상적인 상황을 처리하는 방법을 제공합니다. 예외 처리에서는 try, catch 및 finally 키워드를 사용하여 성공하지 못할 수 있는 작업을 시도하고, 실패를 처리하고, 나중에 리소스를 정리합니다.

예외 처리는 일반적으로 알 수 없는 오류가 발생하는 것을 방지하기 위해 취하는 조치입니다. 예외 처리의 장점은 더 이상 다양한 오류를 고려하기 위해 머리를 숙일 필요가 없다는 것입니다. 이는 특정 유형의 오류를 처리하는 매우 효과적인 방법을 제공하여 프로그래밍 효율성을 크게 향상시킵니다.

CLR(공용 언어 런타임), 타사 라이브러리 또는 throw 키워드를 사용하는 애플리케이션 코드에서 예외가 생성될 수 있습니다.


Features

1. 애플리케이션이 비정상적인 상황(예: 0으로 나누기 또는 메모리 부족 경고)에 직면하면 예외가 생성됩니다.

2. 예외가 발생하면 제어 흐름이 즉시 관련 예외 처리기로 점프합니다(존재하는 경우).

3. 해당 예외에 대한 예외 처리기가 없으면 프로그램 실행이 중지되고 오류 메시지가 표시됩니다.

4. 예외가 발생할 수 있는 작업은 try 키워드를 사용하여 수행됩니다.

5.예외 처리기는 예외가 발생할 때 실행되는 코드 블록입니다. C#에서는 catch 키워드를 사용하여 예외 처리기를 정의합니다.

6. 프로그램은 throw 키워드를 사용하여 명시적으로 예외를 발생시킬 수 있습니다.

7. 예외 개체에는 호출 스택 상태 및 오류에 대한 텍스트 설명을 포함하여 오류에 대한 자세한 정보가 포함되어 있습니다.

8. 예외가 발생하더라도 finally 블록의 코드가 실행되어 프로그램이 리소스를 해제할 수 있습니다.



위 내용은 프로그래밍 언어의 예외 메커니즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.