asp classic에서 Err.number 사용법

2024. 11. 20. 09:55

ASP Classic에서 Err 객체는 런타임 오류 정보를 제공하는 내장 객체입니다. Err.Number 속성은 발생한 오류의 고유 번호를 반환하며, 이를 통해 오류 유형을 식별할 수 있습니다. 아래는 Err.Number를 사용하는 방법에 대한 설명과 예제입니다.


기본 사용법

  1. 오류 처리:
    • ASP Classic에서 오류 처리를 설정하려면 On Error Resume Next를 사용합니다. 이는 실행 중 발생하는 오류를 무시하고 계속 진행하도록 설정합니다.
  2. 오류 감지:
    • Err.Number 속성을 사용하여 오류가 발생했는지 확인합니다. 오류가 발생하지 않으면 Err.Number는 0을 반환합니다.
  3. 오류 재설정:
    • Err.Clear 메서드를 호출하여 오류 정보를 초기화할 수 있습니다.

코드 예제

<%
' 오류 처리를 활성화합니다.
On Error Resume Next

' 오류가 발생할 가능성이 있는 코드 실행
Dim fileSystem
Set fileSystem = Server.CreateObject("Scripting.FileSystemObject")

' 존재하지 않는 파일을 열어보려는 시도 (오류 발생)
Dim file
Set file = fileSystem.OpenTextFile("C:\nonexistentfile.txt", 1)

' 오류 번호 확인
If Err.Number <> 0 Then
    Response.Write("오류가 발생했습니다!")
    Response.Write("오류 번호: " & Err.Number & "")
    Response.Write("오류 설명: " & Err.Description & "")
    
    ' 필요한 오류 처리 수행
End If

' 오류 정보 초기화
Err.Clear

' 다시 정상적인 실행
Response.Write("코드는 계속 실행됩니다.")
%>

주요 속성 및 메서드

  • Err.Number: 오류 번호
  • Err.Description: 오류 설명
  • Err.Source: 오류의 원본 (예: 오류를 발생시킨 객체)
  • Err.HelpContext 및 Err.HelpFile: 도움말 파일 및 컨텍스트 (잘 사용되지 않음)
  • Err.Clear: 오류 정보를 초기화

참고 사항

  • On Error Resume Next는 모든 오류를 무시하고 계속 실행하게 합니다. 하지만 코드 작성 시에는 주요 오류를 적절히 처리하는 로직을 추가해야 합니다.
  • 오류를 무조건 무시하면 디버깅이 어려울 수 있으므로, 특정 조건에서만 On Error Resume Next를 사용하는 것이 좋습니다.

이와 같은 방법으로 오류를 감지하고 적절히 처리할 수 있습니다.

텍사스양 일상에서

클래식 ASP - 서버오류 메세지

2018. 6. 21. 15:55

클래식 ASP 관련,

정확한 오류 위치나 파일명 등이 궁금한데,

다음과 같이 일괄적으로 표시될 때가 있다..


An error occurred on the server when processing the URL. Please contact the system administrator.

If you are the system administrator please click here to find out more about this error.


해결방법:

해당 서버에 접속 -> IIS 실행 -> 해당 사이트 클릭 후,

위 이미지에 있는 ASP 실행


컴파일 - 브라우저에 오류 전송: False -> True 로 변경


변경 후에는

우측 상단 적용버튼 꼭 클릭


해당 오류 페이지 다시 새로고침 하면,

아래와 같이 자세한 오류 표시가 된다..


Microsoft VBScript 컴파일 오류 오류 '800a0401'

문장의 끝이 필요합니다.

/abc/defg/xyz.asp, 줄 19

텍사스양 일상에서

글 등록 시, DEXT.FileUpload 관련 오류가 날 때..

2015. 6. 3. 14:16

아무이상 없이 잘 되던 글 등록이, 
아래와 같이 변수받는 첫 부분에서 오류가 나면서 에러가 발생..

<%
	Set UploadForm = Server.CreateObject("DEXT.FileUpload")
	UploadForm.DefaultPath = CONF_DEFAULT_PATH

	UploadForm.CodePage = 65001
	KeyWord                      = UploadForm("KeyWord")   -->오류가 나는 지점
%>
키워드 값은 입력하지도 않았는데, 오류라니..
첨부파일도 첨부하지 않았는데,
에러구문은 DEXT.FileUpload 어쩌고 저쩌고..

어디가 잘못 된 건지 인클루드 된 파일을 다 뒤져봐도, 
특별한 부분이 없다.. 

그러다 아주 간단한 페이지 안에 

아래와 같이 id값을 받는 부분이 있어 

삭제를 해보니 오류가 나질 않는다..

strId		= Trim(request.form("strId"))
음.. 
request.form를 request로 바꾸니 잘 된다.. 

이유를 찾아보니, 
Form에 enctype="multipart/form-data" 형태로 값을 입력할 때, 
Form 밖에서 request.form으로 변수를 받게 되면, 이런 에러가 발생한다고 한다..

나 혼자였으면 절대 찾지 못했을 에러인데,
퇴근시간 한참 지나 끝까지 찾아주신,
프리랜서 두분께 감사의 말을 전하고 싶다..


텍사스양 일상에서

asp 게시판 만들 때 게시판의 모든 컬럼정보 확인할 수 있는 프로시저(SP)

2009. 9. 15. 12:01


  /*   
exec tn 'Board'   
*/ 

CREATE   Procedure tn    --TableName의 약어로 한거니 본인 편한 이름으로 수정..
   
@tablename  varchar(100)   
   
as   
   
declare @table_name  nvarchar(384), @viewtype   varchar(20)   
set @table_name = @tablename -- 테이블명   
set @viewtype = 'vbcmd'  -- spparam=저장프로시저파라미터, vbfn=ADODB.Command 파미터, vbcmd=ADODB.Command 파미터   
   
 if(@viewtype is null or len(@viewtype) = 0)   
 begin   
  select   
  a1.name   
  , a2.name as typename   
  , a1.length   
  , NULLABLE = convert(smallint, ColumnProperty (a1.id, a1.name, 'AllowsNull'))   
  from syscolumns a1, systypes a2   
  where a1.id = object_id(@table_name)   
  and a1.xtype = a2.xtype   
  order by colid asc   
 end   
 else if(@viewtype = 'spparam')   
 begin   
  select   
  ',@' + a1.name   
  + '     ' + a2.name   
  + case   
   when a2.name = 'binary'   
    or a2.name = 'char'   
    or a2.name = 'nchar'   
    or a2.name = 'nvarchar'   
    or a2.name = 'varbinary'   
    or a2.name = 'varchar' then '(' + convert(varchar, a1.length) + ')'   
   else ''   
    end typelength   
  from syscolumns a1, systypes a2   
  where a1.id = object_id(@table_name)   
  and a1.xtype = a2.xtype   
  order by colid asc   
 end   
 else if(@viewtype = 'vbfn')   
 begin   
  select   
  'ByVal ' + a1.name + ', _'   
  from syscolumns a1, systypes a2   
  where a1.id = object_id(@table_name)   
  and a1.xtype = a2.xtype   
  order by colid asc   
 end   
 else if(@viewtype = 'vbcmd')   
 begin   
  select   
  'ByVal ' + a1.name + ', _',   
  '.Parameters.Append .CreateParameter("' + a1.name   
  + '", '   
  + case a2.name   
   when 'bigint' then 'adBigInt'   
   when 'binary' then 'adBinary'   
   when 'bit' then 'adBoolean'   
   when 'char' then 'adChar'   
   when 'datetime' then 'adDate'   
   when 'decimal' then 'adDecimal'   
   when 'float' then 'adSingle'   
   when 'int' then 'adInteger'   
   when 'money' then 'adCurrency'   
   when 'nchar' then 'adChar'   
   when 'ntext' then 'adLongVarChar'   
   when 'numeric' then 'adNumeric'   
   when 'nvarchar' then 'adVarChar'   
   when 'real' then 'adSingle'   
   when 'smalldatetime' then 'adDate'   
   when 'smallint' then 'adSmallInt'   
   when 'smallmoney' then 'adCurrency'   
   when 'sql_variant' then 'adVariant'   
   when 'text' then 'adLongVarChar'   
   when 'timestamp' then 'adDBTimeStamp'   
   when 'tinyint' then 'adTinyInt'   
   when 'varbinary' then 'adVarBinary'   
   when 'varchar' then 'adVarChar'   
   else '?' + a2.name   
    end   
  + ', adParamInput, '   
  + case   
   when a2.name = 'binary'   
    or a2.name = 'char'   
    or a2.name = 'nchar'   
    or a2.name = 'nvarchar'   
    or a2.name = 'varbinary'   
    or a2.name = 'varchar' then convert(varchar, a1.length)   
   when a2.name = 'ntext'   
    or a2.name = 'text' then 'LenB(' + a1.name + ')'   
   else '0'   
    end   
  + ', ' + a1.name + ')'   
   , a1.name 
   , ',@' + a1.name   
  + '     ' + a2.name   
  + case   
   when a2.name = 'binary'   
    or a2.name = 'char'   
    or a2.name = 'nchar'   
    or a2.name = 'nvarchar'   
    or a2.name = 'varbinary'   
    or a2.name = 'varchar' then '(' + convert(varchar, a1.length) + ')'   
   else ''   
    end typelength   
     , ',@' + a1.name 
     , a1.NAME + ' = Trim(Request("' + a1.NAME + '"))' 
     , a1.NAME + ' = Trim(objRs("' + a1.NAME + '"))' 
     , 'dicParams.Add "' + a1.NAME + '", ' + a1.NAME 
  from syscolumns a1, systypes a2   
  where a1.id = object_id(@table_name)   
  and a1.xtype = a2.xtype   
  order by colid asc   
 end    
    

텍사스양 일상에서

asp 구구단..

2009. 2. 9. 17:37


 response.write "<table border='1'><tr>"
 
 for i = 1 to 9

 response.write "<td>"
 
  for j = 1 to 9
   response.write  i & "*" & j & " = " & i * j & "&nbsp;<br>"
  next
 
 
  If i = 3 or i = 6 then
   response.write "</td><tr>"
  Else
   response.write "</td>"
  end if
 
 next
 
  response.write "</tr></table>"

'===============================================
' 이 간단 구문도 왜 이리 헷갈리는가..

텍사스양 일상에서