C 언어
예외는 프로그램 실행 중에 발생하는 문제입니다. C# 예외는 0으로 나누려는 시도와 같이 프로그램이 실행되는 동안 발생하는 예외적인 상황에 대한 응답입니다.
예외는 프로그램의 한 부분에서 다른 부분으로 제어를 전송하는 방법을 제공합니다. C# 예외 처리는 다음 네 가지 키워드를 기반으로 합니다. try , 잡다 , 드디어 , 던지기 .
시도 - try 블록은 특정 예외가 활성화된 코드 블록을 식별합니다. 그 뒤에 하나 이상의 catch 블록이 옵니다.
잡다 − 프로그램은 문제를 처리하려는 프로그램의 위치에서 예외 처리기로 예외를 포착합니다. catch 키워드는 예외 포착을 나타냅니다.
드디어 − finally 블록은 예외가 발생했는지 여부에 관계없이 주어진 명령문 세트를 실행하는 데 사용됩니다. 예를 들어 파일을 열면 예외 발생 여부와 관계없이 파일을 닫아야 합니다.
던지다 − 문제가 나타나면 프로그램에서 예외가 발생합니다. 이것은 throw 키워드를 사용하여 수행됩니다.
블록에서 예외가 발생한다고 가정하면 메서드는 try 및 catch 키워드의 조합을 사용하여 예외를 catch합니다. 예외를 생성할 수 있는 코드 주위에 try/catch 블록이 배치됩니다. try/catch 블록 내의 코드를 보호 코드라고 하며 try/catch를 사용하는 구문은 다음과 같습니다. -
try { // statements causing exception } catch( ExceptionName e1 ) { // error handling code } catch( ExceptionName e2 ) { // error handling code } catch( ExceptionName eN ) { // error handling code } finally { // statements to be executed }
다양한 상황에서 try 블록이 둘 이상의 예외를 발생시키는 경우 여러 catch 문을 나열하여 다양한 유형의 예외를 catch할 수 있습니다.
C# 예외는 클래스로 표시됩니다. C#의 예외 클래스는 주로 System.Exception에서 직접 또는 간접적으로 파생됩니다. 수업. System.Exception 클래스에서 파생된 일부 예외 클래스는 System.ApplicationException입니다. 및 System.SystemException 수업.
System.ApplicationException 클래스는 응용 프로그램에서 생성된 예외를 지원합니다. 따라서 프로그래머가 정의한 예외는 이 클래스에서 파생되어야 합니다.
System.SystemException class는 미리 정의된 모든 시스템 예외의 기본 클래스입니다.
다음 표는 Sytem.SystemException 클래스에서 파생된 사전 정의된 예외 클래스 중 일부를 제공합니다 -
시니어 번호 | 예외 클래스 및 설명 |
---|---|
1 | System.IO.IO 예외 I/O 오류를 처리합니다. |
2 | System.IndexOutOfRangeException 메서드가 범위를 벗어난 배열 인덱스를 참조할 때 발생하는 오류를 처리합니다. |
3 | System.ArrayTypeMismatchException 유형이 배열 유형과 일치하지 않을 때 발생하는 오류를 처리합니다. |
4 | System.NullReferenceException null 개체를 참조하여 생성된 오류를 처리합니다. |
5 | System.DivideByZeroException 피제수를 0으로 나눌 때 발생하는 오류를 처리합니다. |
6 | System.InvalidCastException typecasting 중 발생하는 오류를 처리합니다. |
7 | System.OutOfMemoryException 사용 가능한 메모리가 부족하여 발생하는 오류를 처리합니다. |
8 | System.StackOverflowException 스택 오버플로에서 발생하는 오류를 처리합니다. |
C#은 try 및 catch 블록의 형태로 예외 처리에 대한 구조화된 솔루션을 제공합니다. 이러한 블록을 사용하면 핵심 프로그램 명령문이 오류 처리 명령문과 분리됩니다.
이러한 오류 처리 블록은 try를 사용하여 구현됩니다. , 잡다 , 그리고 마침내 키워드. 다음은 0으로 나누는 조건이 발생할 때 예외를 던지는 예입니다 -
라이브 데모using System; namespace ErrorHandlingApplication { class DivNumbers { int result; DivNumbers() { result = 0; } public void division(int num1, int num2) { try { result = num1 / num2; } catch (DivideByZeroException e) { Console.WriteLine("Exception caught: {0}", e); } finally { Console.WriteLine("Result: {0}", result); } } static void Main(string[] args) { DivNumbers d = new DivNumbers(); d.division(25, 0); Console.ReadKey(); } } }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Exception caught: System.DivideByZeroException: Attempted to divide by zero. at ... Result: 0
사용자 고유의 예외를 정의할 수도 있습니다. 사용자 정의 예외 클래스는 예외에서 파생됩니다. 수업. 다음 예는 이것을 보여줍니다 -
라이브 데모using System; namespace UserDefinedException { class TestTemperature { static void Main(string[] args) { Temperature temp = new Temperature(); try { temp.showTemp(); } catch(TempIsZeroException e) { Console.WriteLine("TempIsZeroException: {0}", e.Message); } Console.ReadKey(); } } } public class TempIsZeroException: Exception { public TempIsZeroException(string message): base(message) { } } public class Temperature { int temperature = 0; public void showTemp() { if(temperature == 0) { throw (new TempIsZeroException("Zero Temperature found")); } else { Console.WriteLine("Temperature: {0}", temperature); } } }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
TempIsZeroException: Zero Temperature found
System.Exception에서 직접 또는 간접적으로 파생된 경우 개체를 throw할 수 있습니다. 수업. catch 블록에서 throw 문을 사용하여 현재 개체를 -
로 throw할 수 있습니다.Catch(Exception e) { ... Throw e }
C 언어
자재 취급, 운송, 포장 및 배송은 모든 산업 창고에서 중요한 기능입니다. 이러한 재료는 개별 구성 요소, 진행 중인 부품 또는 고객 측에서 조립할 준비가 된 제품 또는 장비일 수 있습니다. 이 모든 작업을 수동으로 수행해야 하는 경우 여기에는 특정 문제가 있습니다. 여기에는 인간이 모험을 할 수 없는 영역에 접근하는 것과 안전 문제 등이 포함됩니다. 이러한 모든 문제에 대한 한 가지 해결책은 자재 취급 자동화 시스템을 구현하는 것입니다. . 자재 취급 자동화 시스템의 장점이 많이 있습니다. , 이 게시물이 조명합니다. 수동 자재
5축 머시닝 센터의 고성능 라인 및 고성능 라인용으로 설계된 Hermle의 HS Flex 중량물 처리 시스템은 설치 스테이션, 보관 모듈 및 작업 영역 간에 최대 1,200kg(팔레트 포함) 범위의 공작물을 이동할 수 있습니다. 이 시스템을 사용하면 800 × 630mm 범위의 팔레트를 크레인으로 정밀하게 적재할 수 있습니다. 작업자 오류의 가능성을 최소화하기 위해 최대 높이 700mm를 초과하지 않도록 로드 전에 공작물을 측정합니다. 두 개의 이중 문에는 이중 기능이 있습니다. 팔레트 교체 절차 중에 작업자의 접근을 방지합니다.