사용자가 항상 정확한 세부정보를 입력할 것이라고 기대할 수는 없습니다. 그러나 올바르지 않거나 예상치 못한 입력이 올바르게 처리되지 않으면 전체 코드가 충돌하거나 무한 루프가 발생할 수 있습니다. 프로그램 실행 중 예상치 못한 조건이나 입력으로 인해 발생하는 문제입니다. 예를 들어, 숫자를 0으로 나누면 결과는 무한합니다. 예외 처리는 프로그램이 다음 코드 블록으로 이동하도록 지시하거나 특정 상황에서 정의된 결과를 제공하는 방법입니다.
아래의 4가지 키워드로 예외처리가 가능합니다.
예외 처리기를 정의하면 소프트웨어나 코드의 번거로움을 덜 수 있습니다. 예외가 발생할 수 있는 곳마다 예외 처리기를 정의하는 것이 좋습니다.
구문:
예외가 발생할 때마다 선언된 메서드는 try 및 catch 키워드를 사용하여 예외를 포착합니다. 이 조합을 코드 부분에 배치해야 하며 예외가 예상됩니다. 이러한 코드를 보호 코드라고 합니다. 하나의 try 키워드에 대해 둘 이상의 catch 키워드를 정의할 수도 있습니다. 콘텐츠가 끝나면 코드의 마지막 부분이 실행되어 예외 발생 여부와 관계없이 실행됩니다.
코드:
try { //Define the statement that could cause an exception. } Catch(ExceptionName secondException) { //error handling code } Finally { //define the statement that will be executed }
예외 처리를 위해 사전 정의된 클래스가 많이 있습니다. try 블록은 예외를 발생시킬 수 있는 코드 부분을 다루고, catch는 예외가 발견될 때 수행할 작업을 확인합니다. 블록의 마지막 부분은 예외가 감지되었는지 여부에 관계없이 수행해야 할 작업을 정의하고 발생 부분은 설정된 경우 메시지를 표시합니다.
C#에는 예외를 표현할 수 있는 클래스가 많이 있습니다. 모든 클래스는 System이라는 기본 클래스에서 파생됩니다. 예외. System.ApplicationException 및 System.SystemException에서도 파생되는 클래스가 거의 없습니다.
예외는 시스템에서 파생됩니다. 예외 클래스. C# 공통 예외 클래스 목록은 다음과 같습니다.
Exception | Description |
System.DivideByZeroException | handles the error when trying to divide a number by zero. |
System.NullReferenceException | handles the error when referring to an object which does not exist. |
System.InvalidCastException | handles the error when trying invalid casting. |
System.IO.IOException | All input-output error is handled. |
System.FieldAccessException | When trying to access unauthorized class |
Exception handling is done by try and catches block in C#. The try block in C# is used to place the code that may throw an exception. The exception is handled by the catch block.
Code:
using System; public class exceptionhandling { public static void Main(string[] args) { int a = 10; int b = 0; int x = a/b; //we are trying to divide the number with zero Console.WriteLine("other part of the code"); } }
Output:
Code
using System; public class ExExample { public static void Main(string[] args) { try { int a = 10; int b = 0; int x = a / b; } catch (Exception e) { Console.WriteLine(e); } Console.WriteLine("Rest of the code"); } }
Output:
It will show you the message regardless the exception is caught.
Code
using System; public class Exceptionhandling { public static void Main(string[] args) { try { int x = 5; int y= 0; int z = x / y; } catch (Exception obj) { Console.WriteLine(obj); } finally { Console.WriteLine("Time to execute finally block"); } Console.WriteLine("Other part of the code"); } }
Output:
Code
using System; public class ExceptionHandling { public static void Main(string[] args) { try { int p = 6; int q = 0; int r= p/q; } catch (NullReferenceException nullObject) { Console.WriteLine(nullObject); } finally { Console.WriteLine("Exception not handled. Now Finally section will be executed"); } Console.WriteLine("Other part of the code"); } }
Output:
The not only system defined, but we can also set our own exception. However, we need to inherit the code in order to get this done.
Code
using System; public class userdefinedInvalidAge : Exception { public userdefinedInvalidAge (String errorMessage) : base(errorMessage) { } } public class TestUserDefinedException { static void validateAge(int age) { if (age < 18) { throw new userdefinedInvalidAge("Sorry, Age must be greater than 18"); } } public static void Main(string[] args) { try { validateAge(12); } catch (userdefinedInvalidAge e) { Console.WriteLine(e); } Console.WriteLine("Rest of the code"); } }
Output:
At any place you think it might generate an error because of anything, exception handler should be used. It is essential that you use a catch statement and start from generic to a specific exception. Your entire software or code is at risk without proper exception handler.
위 내용은 C#의 예외 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!