C#에서 ASP.NET 응용 프로그램을 작성하고 있으며 다른 파일에서 발생할 수있는 가능한 예외를 처리하기 위해 노력하고 있습니다. SQL 명령을 실행하는 메서드를 포함하는 C# 클래스 파일이 있는데 응용 프로그램이 제작되면 예외가 발생하지 않도록 보호하려고합니다. 다음과 같은 라인을 파일별도의 클래스 파일에서 ASP.NET (C#)의 예외 처리
public SqlConnection openConnection()
{
//Create an SQL connection
SqlConnection myConnection = new SqlConnection("My intentionally incorrect connection string");
//Open the connection
try
{
myConnection.Open();
}
catch (SqlException myAppEx)
{
throw new ApplicationException("There was an error opening the SQL database connection", myAppEx);
}
return myConnection;
}
내하여 default.aspx.cs에서이 메소드를 호출
이
내가 의도적으로 (SqlData.cs에서)에서 오류를 던지고 오전 쓴 SQL 방법입니다 코드 :try
{
//The ReadDT method calls openConnection() in itself
dt = sqlData.ReadDT(query);
}
catch (ApplicationException exc)
{
throw exc;
}
나는 예외가 현재 페이지에서 발생할 경우 here 인용으로의 Page_Error 방법은, 호출하도록되어 페이지 레벨의 예외 처리를 구현하기 위해 노력하고 있습니다. 그래서 내 SqlData.cs 클래스 파일에서 throw 된 예외를 catch하고 예외를 다시 throw하여이 예외가 서버에 표시되도록합니다. 따라서 Server.GetLastError()
은 null
을 반환하지 않습니다.
구현 된대로 here으로, 예외에 대한 모든 정보를 표시하는 별도의 오류 페이지가 있습니다.
private void Page_Error(object sender, EventArgs e)
{
Server.Transfer("ErrorPage.aspx?handler=Page_Error%20-%20Default.aspx", true);
}
는 여기에서 사용자는 내 ErrorPage.aspx로 리디렉션되고 원래 발생 된 SqlException
은 (는) 도심에 표시됩니다 다음과 같이 내의 Page_Error 방법이다.
문제 - SqlData.cs에서 예외를 catch하고 예외를 다시 throw하면 UnhandledException
이 발생합니다. ReadDT 메서드 호출에서 try catch 블록을 두지 않으면 SqlData.cs 파일에서 동일한 UnhandledException
이 발생합니다.
코드 추적 : 그것은 모든이 실행하고 있어야 같이 Page_Error
메소드가 호출
throw new ApplicationException("There was an error opening the SQL database connection", myAppEx);
(이 제대로 작동) 예외는 다음 잡힌 재 던져 (UnhandledException
가 발생)- 정확히!
나는 자신에게 대답하는 것이 분명해지기를 바란다. 나는 예외와 나의 특별한 문제에 대해 많은 연구를했으며 나는 대답을 찾지 못했다.
감사합니다, ASP.NET에서 에릭
그래서 여기에 귀하의 전반적인 목표는 예외가 발생했을 때 사용자의 오류 페이지로 리디렉션됩니다 있는지 확인하는 것입니다? – Arran
글로벌 파일에서'Application_Exception'은 어떻게됩니까? –
Shekhar를 듣습니다. global.aspx 파일에 전역 예외 처리기가 있거나 호출 된 항목이 있습니다.이 코드를 사용하여 사용자 지정 오류 페이지로 리디렉션 할 수 있습니다 ... –