C#에서 예외 클래스 없이 사용자 지정 예외 발생
이 자습서에서는 Exception
클래스를 사용하지 않고 C#에서 사용자 지정 예외를 throw하는 방법을 알려줍니다. 먼저 예외의 개념에 대해 이야기해 봅시다.
C#
의 예외
프로그램은 실행 중에 언제든지 예외를 만날 수 있습니다. 오류의 일반적인 정의는 고통을 유발하지만 예상하지 못한 발생입니다.
그러나 여러 가지 이유로 응용 프로그램 코드 내의 예외는 과정과 동일합니다. 예외 처리는 예외가 명시적으로 발생할 때마다 예외를 처리하는 데 사용하는 논리 애플리케이션입니다.
다양한 상황에서 예외가 보장될 수 있습니다. 이 오류는 잘 알려진 NullReferenceException
및 데이터베이스 쿼리 시간 초과를 포함하여 여러 가지 원인으로 인해 발생할 수 있습니다.
C#
에서 예외 클래스 없이 사용자 지정 예외 발생
사용자 지정 예외는 특정 예외 유형을 포착하고 처리하려는 경우에 편리합니다. 또한 중요한 예외를 추적하는 데 도움이 될 수 있습니다.
고유한 예외 유형은 오류 모니터링 도구가 응용 프로그램 문제 및 로그를 추적하는 데 도움이 됩니다.
예
아래 예에서는 직원을 확인하는 애플리케이션에 EmployeeNotFoundException
클래스를 생성합니다. 직원 배열에 없으면 예외가 발생합니다.
시작하려면 다음 라이브러리를 가져와야 합니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
먼저 직원 ID와 직원 이름을 보유할 MyEmployee
클래스를 만듭니다.
class MyEmployee {
public int empid { get; set; }
public string empname { get; set; }
}
이제 EmployeeNotFoundException
유형 예외를 생성합니다. 직원 배열에서 직원을 찾을 수 없는 경우 발생합니다.
class EmployeeNotFoundException : Exception {
public EmployeeNotFoundException(string employeename)
: base(String.Format("Employee Not Found: {0}", employeename)) {}
}
Main()
메서드에서 다음과 같은 두 개의 MyEmployee
개체를 만듭니다.
MyEmployee emp1 = null;
MyEmployee emp2 = null;
emp1.empname
및 emp2.empname
을 직원 이름으로 채우고 개체를 CheckEmployee
메서드에 전달하여 직원이 목록에 있는지 여부를 확인합니다.
try {
emp1 = new MyEmployee();
emp1.empname = "Muhammad Zeeshan";
CheckEmployee(emp1);
emp2 = new MyEmployee();
emp2.empname = "Hermes Fang";
CheckEmployee(emp2);
}
직원이 배열에 없으면 EmployeeNotFoundException
이 발생합니다.
catch (EmployeeNotFoundException ex) {
Console.WriteLine(ex.Message);
}
마지막으로, 아래와 같이 .contains()
의 도움으로 직원을 검증하는 CheckEmployee()
함수를 생성합니다.
public static void CheckEmployee(MyEmployee e) {
string[] arr = { "Muhammad Zeeshan", "Ali Khan", "Saad Jaan" };
if (!arr.Contains(e.empname))
throw new EmployeeNotFoundException(e.empname);
}
완전한 소스 코드:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CustomxceptionbyZeeshan {
class MyEmployee {
public int empid { get; set; }
public string empname { get; set; }
}
class EmployeeNotFoundException : Exception {
public EmployeeNotFoundException(string employeename)
: base(String.Format("Employee Not Found: {0}", employeename)) {}
}
class Program {
static void Main(string[] args) {
MyEmployee emp1 = null;
MyEmployee emp2 = null;
try {
emp1 = new MyEmployee();
emp1.empname = "Muhammad Zeeshan";
CheckEmployee(emp1);
emp2 = new MyEmployee();
emp2.empname = "Hermes Fang";
CheckEmployee(emp2);
} catch (EmployeeNotFoundException ex) {
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
public static void CheckEmployee(MyEmployee e) {
string[] arr = { "Muhammad Zeeshan", "Ali Khan", "Saad Jaan" };
if (!arr.Contains(e.empname))
throw new EmployeeNotFoundException(e.empname);
}
}
}
출력:
Employee Not Found: Hermes Fang
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn