ASP는 너무 단순해서 많은 개발자가 오류 처리에 대해 생각하지 않습니다. 오류 처리를 통해 애플리케이션을 더욱 논리적으로 만들 수 있습니다. 나는 ASP로 작성된 많은 상용 웹사이트를 보았지만 대부분 오류 처리를 무시했습니다. 유형이 잘못되었습니다.
오류에는 세 가지 주요 유형이 있습니다.
1. 컴파일 오류:
이러한 종류의 오류는 일반적으로 코드의 구문 문제로 인해 발생합니다. 컴파일 오류로 인해 ASP 실행이 중지되었습니다.
2. 실행 오류:
이 오류는 ASP 실행을 준비할 때 발생합니다. 예를 들어 변수에 값을 할당하려고 시도했지만 값이 변수의 허용 범위를 벗어난 경우입니다.
3. 논리 오류:
논리적 오류는 감지하기 가장 어렵습니다. 이 오류는 컴퓨터에서 찾을 수 없는 구조적 오류인 경우가 많습니다. 이를 위해서는 코드를 위에서 아래로 검사해야 합니다.
컴파일 오류는 일반적으로 논리적 오류와 함께 발생하고 일반적으로 표시될 수 있으므로 실행 오류만 걱정하면 됩니다. 이는 모두 ASP 실행을 종료하고 사용자에게 매우 불친절한 텍스트를 남깁니다. 그렇다면 런타임 오류를 어떻게 처리합니까?
오류 유형:
ADODB.필드(0x800A0BCD)
BOF 또는 EOF가 TRUE이거나 현재 레코드가 삭제되었으며 필요한 작업에 현재 레코드가 필요합니다.
이유: SQL을 사용하여 데이터베이스의 레코드를 검색했을 때 검색 결과가 비어 있었고, 레코드가 비어 있는 상황을 처리하지 못했습니다.
해결 방법: 1. 검색 결과가 비어 있다고 생각되지 않으면 SQL 문이 올바른지 고려해야 합니다. 2. 실제로 비어 있으면 "if rs.eof then" 또는 "do while"을 추가해야 합니다. not rs.eof ""와 같은 문은 eof 상황을 처리하는 데 사용됩니다.
오류 유형:
(0×80020009)
사고가 발생했습니다.
이유: SQL을 사용하여 데이터베이스 레코드를 검색할 때 검색 결과가 비어 있었고 후속 코드에서 rs("aa")와 같은 레코드를 호출했습니다.
해결책: 위와 동일하고 rs.eof의 판단 및 처리가 추가되거나 SQL 문이 잘못되어 레코드를 찾을 수 없고 rs("aa") 레코드를 나중에 사용할 수 없습니다.
오류 유형:
활성 서버 페이지, ASP 0126(0×80004005)
포함된 파일 'xxx.asp'를 찾을 수 없습니다.
이유: 오류 메시지에 나와 있듯이 이 포함 파일이 존재하지 않습니다.
해결 방법: 이 파일이 있다고 확신한다면 경로가 잘못 작성된 것입니다. 예를 들어 웹 사이트의 루트 디렉터리에 대한 상대 경로는 inc/xxx.asp여야 하며 inc/xxx.asp는 include에 작성해야 합니다. , xxx.asp 뿐만이 아닙니다. 첨부: include 작성 방법은 다음과 같습니다.
오류 유형:
ODBC 드라이버용 Microsoft OLE DB 공급자(0×80004005)
[Microsoft][ODBC Microsoft Access Driver] 작업은 업데이트 가능한 쿼리를 사용해야 합니다.
이유: 이는 XP 서버에서 매우 일반적이며 서버 구성 문제 또는 사용자 권한 문제입니다.
해결 방법: 오류가 이 컴퓨터에서만 디버깅하는 경우 웹 사이트가 있는 폴더를 마우스 오른쪽 버튼으로 클릭하고 "공유 및 보안..."을 클릭한 다음 "보안"에서 추가...를 클릭하고 모든 사람을 쓴 다음 이를 활성화합니다. 사용자의 권한은 모두, 즉 첫 번째 권한을 제외한 모든 권한이 확인된 후 새로 고쳐지면 사용할 수 있습니다. (참고: "보안" 옵션을 찾을 수 없는 경우 아무 폴더에서나 "도구"를 클릭한 다음 "폴더 옵션" - "보기"를 클릭하고 "단순 파일 공유 사용" 열의 선택을 취소하세요. 가능)
오류 유형:
Microsoft VBScript 컴파일러 오류(0x800A0401)
진술이 끝나지 않았습니다
이유: 구문 오류입니다.
해결책: 시스템에서 메시지를 표시하는 행을 확인하십시오. 프롬프트가 이 페이지의 마지막 줄인 경우 if 문이 "end if"를 쓰는 것을 잊었고 select 문이 "end select"를 쓰는 것을 잊었을 가능성이 높습니다. 이 필요하므로 서버가 이를 찾지 못하게 되면 명령문 마지막 줄에 오류가 표시되어야 합니다.
오류 유형:
Microsoft JET 데이터베이스 엔진(0x80040E10)
하나 이상의 매개변수에 값이 지정되지 않았습니다.
이유: SQL 문을 작성할 때 일부 매개변수를 호출하는 경우가 많으며 이러한 매개변수 중 하나에 값이 할당되지 않았을 가능성이 있습니다.
해결 방법: 각 매개변수의 값이 실제로 전달되는지 확인하십시오. 일부 매개변수는 실제로 ""일 가능성이 높습니다. 물론 이러한 매개변수를 사용하여 데이터베이스를 인덱싱하는 것은 불가능합니다.
오류 유형:
Microsoft JET 데이터베이스 엔진(0x80040E37)
Microsoft Jet 데이터베이스 엔진이 입력 테이블이나 쿼리 'AA'를 찾을 수 없습니다. 존재 여부와 이름 철자가 올바른지 확인합니다.
이유: 이 테이블이 존재하지 않습니다.
해결책: 잘못된 테이블 이름을 썼거나 잘못된 데이터베이스에 연결했을 수 있습니까? 다시한번 꼼꼼히 확인해보세요!
오류 유형:
Microsoft VBScript 런타임 오류(0x800A000D)
유형 불일치: /'[string: ""]/"
이유: 변수 유형이 문자열인데 숫자나 다른 유형으로 사용하기 때문입니다.
해결 방법: 예를 들어 i=i+1과 같은 수학 연산을 계산하기 위해 숫자 변수가 필요한 경우 변수에 cint(변수 이름)를 사용하여 숫자 유형으로 강제 변환해야 합니다. 같은 타입이므로 변환도 필요하므로 방법은 위와 동일합니다.
오류 유형:
Microsoft JET 데이터베이스 엔진(0x80040E07)
표준 표현식의 데이터 유형이 일치하지 않습니다.
이유: 일반적으로 SQL 문을 작성할 때 오류가 발생합니다. 즉, 숫자 변수와 문자열 변수가 혼동됩니다.
해결책: ""가 추가된 변수에서 작은따옴표를 제거하거나 원래 숫자로 간주되었던 변수에 ""를 추가한 다음 효과를 확인하는 것은 쉽습니다.
오류 유형:
Microsoft VBScript 실행 오류(0x800A01A8)
누락된 개체:"
이유: rs 개체를 정의하지 않았을 가능성이 높습니다.
해결 방법: 객체를 정의할 수 있도록 set rs=server.CreateObject("adodb.recordset")를 작성하는 것을 잊지 마십시오. 그렇지 않으면 이 작성 방법을 직접 사용하지 말고 conn을 사용하는 것이 훨씬 더 편리합니다. 실행("SQL")을 직접 수행할 필요가 없습니다. 객체 문제를 고려하십시오.
오류 유형:
Microsoft VBScript 런타임 오류(0x800A005E)
잘못된 사용 Null: '교체'
이유: 분할 등을 포함하여 잘못된 기능 사용이 일반적입니다. 교체 내용이 비어 있기 때문에 이유는 비교적 간단합니다.
해결 방법: 교체하려는 콘텐츠가 비어 있는지 확인하려면 IF를 추가하는 것이 가장 좋습니다.
Microsoft VBScript 컴파일러 오류 오류 '800a03f6'
ODBC 드라이버가 필수 속성을 지원하지 않습니다.
이유: sql 문에 필드 이름이 표시되지 않기 때문일 수 있으며, 일반적으로 필드 이름이나 sql 키워드가 잘못 작성됩니다. SQL로 열려는 테이블이 단독으로 열려 있을 수도 있습니다.
해결 방법: SQL 문에 나타나는 모든 필드 이름과 모든 키워드를 확인하세요.
ODBC 드라이버용 Microsoft OLE DB 공급자 오류 '80004005'
'HDZC-3JQSKBWO02' 시스템의 사용자 'Admin'이 데이터 테이블 'order_detail'에 대한 배타적 잠금을 가지고 있습니다.
이유: SQL에서 요구하는 테이블이 접근에 의해 테이블 디자인 형태로 오픈됨
해결 방법: 테이블 디자인 끄기
Microsoft VBScript 컴파일러 오류 오류 '800a03f6'
필수 이름 또는 서수에 해당하는 컬렉션에서 항목을 찾을 수 없습니다.
이유: sql 문에 필드 이름이 표시되지 않습니다. 일반적으로 필드 이름이나 sql 키워드를 쓰는 데 오류가 있습니다.
해결 방법: SQL 문에 나타나는 각 필드 이름을 확인하세요.
ADODB.Recordset 오류 '800a0e78'
개체가 닫혀 있는 동안에는 작업이 허용되지 않습니다.
이유: rs.open sql,conn,3,3 문 이전에 rs.close를 사용하여 rs 객체를 닫았습니다.
해결책: 이전 rs.close를 제거하십시오.
ODBC 드라이버용 Microsoft OLE DB 공급자 오류 '80040e14'
[Microsoft][ODBC Microsoft Access Driver] 쿼리 식 'oid = 25'인 oid form classtree에 구문 오류(연산자 누락)가 있습니다.
이유: SQL 문에 불법적으로 작성된 영문 키워드 또는 하위 단락 오류가 있습니다.
해결 방법: SQL 문을 입력한 다음 단어별로 비교하여 쓰기 오류를 찾습니다.
작업에 업데이트 가능한 쿼리가 필요합니다.
답변: 라이브러리 파일이 읽기 전용인지 확인하세요.
답변 2: 정렬된(정렬 기준) 레코드 세트(rs)는 업데이트 작업(rs.update)을 허용하지 않습니다.
3219 이 콘텐츠에는 작업이 허용되지 않습니다.
답변 3: 데이터베이스 필드 속성이 Null 값 삽입을 허용하도록 설정되어 있는지 여부.
adErrInvalidArgument 3001
0x800A0BB9
애플리케이션이 잘못된 유형의 매개변수를 사용하거나, 허용 범위를 벗어나거나, 다른 매개변수와 충돌합니다.
adErrNoCurrentRecord 3021
0x800A0BCD
BOF 또는 EOF가 True이거나 현재 레코드가 삭제되었습니다. 애플리케이션에서 요청한 작업에는 현재 레코드가 필요합니다.
adErrIllegal작업 3219
0x800A0C93
애플리케이션에서 요청한 작업은 이 컨텍스트에서 허용되지 않습니다.
adErrInTransaction 3246
0x800A0CAE
애플리케이션은 트랜잭션 중에 연결 개체를 명시적으로 닫을 수 없습니다.
adErrFeatureNotAvailable 3251
0x800A0CB3
공급자가 응용 프로그램에서 요청한 작업을 지원하지 않습니다.
adErrItemNotFound 3265
0x800A0CC1
ADO는 응용 프로그램에서 요청한 이름 또는 시퀀스 참조에 해당하는 개체를 컬렉션에서 찾을 수 없습니다.
adErrObjectInCollection 3367
0x800A0D27
추가할 수 없습니다. 개체가 이미 컬렉션에 있습니다.
adErrObjectNotSet 3420 0x800A0D5C 응용 프로그램에서 참조하는 개체가 더 이상 유효한 개체를 가리키지 않습니다.
adErrDataConversion 3421
0x800A0D5D
애플리케이션이 현재 작업에 적합하지 않은 값 유형을 사용했습니다.
adErrObjectClosed 3704
0x800A0E78
개체가 닫혀 있으면 응용 프로그램에서 요청한 작업이 허용되지 않습니다.
adErrObjectOpen 3705
0x800A0E79
객체가 열려 있으면 애플리케이션에서 요청한 작업이 허용되지 않습니다.
adErrProviderNotFound 3706
0x800A0E7A
ADO가 지정된 공급자를 찾을 수 없습니다.
adErrBoundToCommand 3707
0x800A0E7B
응용 프로그램은 Command 개체를 사용하여 Recordset 개체의 ActiveConnection 속성을 소스 데이터로 변경할 수 없습니다.
adErrInvalidParamInfo 3708
0x800A0E7C
응용 프로그램이 Parameter 개체를 잘못 정의했습니다.
adErrInvalidConnection 3709
0x800A0E7D
응용 프로그램은 닫혀 있거나 잘못된 연결 개체를 참조하여 개체에 대한 작업을 요청합니다.
ADODB.Field 오류 '80020009' BOF 또는 EOF가 'true'이거나 현재 레코드가 삭제되었으며 필요한 작업에 현재 레코드가 필요합니다.
해결 방법은 다음과 같습니다. SELECT 및 DELETE 레코드가 존재하지 않거나 라이브러리에 레코드가 없기 때문에 발생하는 오류이므로 SQL 문을 확인하여 SELECT 및 DELETE 조건이 올바른지 확인하는 것이 가장 좋습니다. 레코드를 선택하거나 DELETE 전에 On을 사용하십시오. Error Resume Next….On Error Goto 0을 처리하십시오. 라이브러리에 레코드가 없기 때문이라면 판단을 추가하면 됩니다. If objRecordSet.Eof 및 objRecordSet.Bof 그러면 RecordSet이 열리면 기본적으로 포인터가 끝을 가리키므로 If objRecordSet을 사용하면 됩니다. Eof 그럼 판단하겠습니다.
ActiveServerPages,ASP0126(0×80004005)–>포함 파일을 찾을 수 없습니다.
MicrosoftOLEDBProviderforODBCDrivers(0x80040E21) –>SQL 문 오류(데이터 형식 불일치 또는 테이블 이름(필드 이름) 오류 또는 테이블이 편집 상태이거나 conn에서 연 데이터베이스에 테이블이 존재하지 않음)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E14) –>SQL 문 오류(필드 이름 오류 또는 데이터 형식 불일치)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E07) –>sql 문 오류(삽입 또는 업데이트할 필드 유형이 변수 데이터 유형과 일치하지 않음)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E57) –>sql 문 오류(삽입 또는 업데이트할 데이터가 오버플로됨)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E10) –>SQL 문 오류(업데이트할 업데이트 필드 이름 또는 데이터 유형이 잘못됨)
MicrosoftOLEDBProviderforODBCDrivers(0×80004005) –>sql 문 오류(삽입 또는 업데이트할 필드의 값이 null일 수 없음)
MicrosoftOLEDBProviderforODBCDrivers(0×80004005) –>데이터베이스 열기 오류, 지정된 디렉터리에 데이터베이스가 없습니다.
MicrosoftOLEDBProviderforODBCDrivers(0x80040E37)–>테이블을 찾을 수 없습니다.
MicrosoftVBscript 런타임 오류(0x800A000D) ->rs 변수 참조 오류(rs 개체가 닫혀 있거나 정의되지 않음)
MicrosoftVBscript 런타임 오류(0x800A01C2) –>vbscript 스크립트 오류(vbscript 문 오류)
MicrosoftVBscript 런타임 오류(0x800A0006) –>vbscript 스크립트 오류(오버플로 오류)
MicrosoftVBscript 컴파일러 오류(0x800A040E)–>루프 누락
MicrosoftVBscript 컴파일러 오류(0x800A03EA)–>if 또는 endif 누락
MicrosoftVBscript 컴파일러 오류(0x800A03EE)–>문이 종료되지 않음(")")
MicrosoftVBscript 컴파일러 오류(0x800A03F6)–>if 문 오류(endif 누락)
MicrosoftVBscript 런타임 오류(0x800A005B)–>세트가 누락되었습니다.
MicrosoftVBscript 런타임 오류(0x800A0005) ->변수가 정의되지 않았습니다.
MicrosoftVBscript 컴파일러 오류(0x800A03F9)–>if 문이 누락된 경우
MicrosoftVBscript 컴파일러 오류(0x800A0411) –>dim 문 정의 오류
ADODB.Recordset(0x800A0BB9) –>SQL 문 오류(SQL 문 또는 conn 문이 정의되지 않았거나 rs 속성에 값을 할당할 때 오류가 발생함)
ADODB.Recordset(0x800A0CC1) –>rs 개체 오류(rs 개체 자체가 존재하지 않거나 존재하지 않는 필드 이름을 잘못 참조함)
ADODB.Recordset(0x800A0BCD) –>rs 객체 오류(레코드셋에 레코드가 없는데 레코드셋이 동작하고 있는 경우)
ADODB.Recordset(0x800A0E78)–>rs 개체 오류(레코드 집합이 존재하지 않음, rs.open 문이 누락됨)
ADODB.Recordset(0x800A0CC1) –> rs 개체 오류(존재하지 않는 필드 이름 참조)
ADODB.Recordset(0x800A0E7D)–>conn 정의 오류
ADODB.Recordset(0x800A0CB3)–>데이터베이스가 읽기 전용 모드로 열리므로 데이터를 업데이트할 수 없습니다.