은 내가
은 try/catch 블록은 예외를 잡기위한 시도 캐치를 사용하고 해당 정보로 뭔가를 할 exception.Can를 던질 필요가있다. 당신이 예외를 발생해야하는 경우, 단순히 그것을
if (fileEntries.Length == 0)
{
throw new Exception("No *.csv files available");
}
이 예외가 지금이 코드 조각이 위치하고 방법이라는 방법을 위쪽으로 발생합니다 던져. try/catch 블록을 사용하여이 예외를 catch하고 정보를 사용할 수준을 결정할 수 있습니다. method1
위쪽으로 여행 및 실행에서 프로그램을 중지/대폭를 중단됩니다이 예외를 잡은하지 않을 경우
예
void method1(){ method2(); }
void method2(){ method3(); }
void method3()
{
string[] fileEntries = Directory.GetFiles(filepath, "*.csv");.
if (fileEntries.Length == 0)
{
throw new Exception("No *.csv files available");
}
}
. 이 수준에서 그것을 잡을하고 (예를 들어 당신이 콘솔 응용 프로그램이있는 경우) 사용자에게 정보를 제공 할 수 있습니다 더
을 확인하기위한 데이터를 추가
void method1()
{
try
{
method2();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
내가 제외 obj를 전직을 통과 할 수 있습니다
은 당신이 정보의 소스, 또는 내부 예외로 additional exception로 string
을 통과 할 수 있도록 기본 Exception의 생성자를 살펴 보자.
편집 :
당신이 Corak에 의해 제안으로 자신의 custom exception을 작성하는 경우. 당신은 당신의 자신의 생성자를 정의하고 오류 코드에 대한 예를 enum
에 대한 전달할 수 : method3
에서 지금
public enum ErrorCodes
{
E1,
E2,
S4,
P5
}
public class MyObjectTransferException : Exception
{
public object ErrorCode { get; set; }
public MyObjectTransferException(string message, ErrorCodes code) : base(message)
{
this.ErrorCode = code;
}
}
당신이 예외의이 형태를 슬로우 :
void method3()
{
string[] fileEntries = Directory.GetFiles(filepath, "*.csv");.
if (fileEntries.Length == 0)
{
throw new MyObjectTransferException("No *.csv files available", ErrorCodes.E1);
}
}
및 method1
당신은해야합니다
void method1()
{
try
{
method2();
}
catch(MyObjectTransferException ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.ErrorCode);
}
}
예외를 포착하는 것은 예외를 포착하는 것과 반대입니다. 'C# 예외 예외'를 검색하면 많은 예제를 찾을 수 있습니다. – Rob
참고 사항 : [예외 및 예외 처리] (https://docs.microsoft.com/dotnet/csharp/programming-guide/exceptions/) – Corak