[ 뒤로가기 ] Wel 에러 및 경고 테스트 [ 뒤로가기 ]
아래의 예제들은 에러나 경고가 발생되는 프로그램의 예이며 예제 Source#의 내용에 표시된 프로그램이
'실행하기'를 클릭하시면 실제로 실행이 되며 해당 오류가 발생되는 것을 확인할 수 있습니다. 또한 표시된
메시지에서 'Online 도움말'을 클릭하시면 온라인 실시간 도움말을 참고하여 디버깅에 큰 도움이 될 것입니다.
Stack overflow!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

print(1,
2,
3,
4,
5,

중간생략
(1씩증가며 총 32769개의 인자를 전달함)

32767,
32768,
32769);
#!/bin/wel

while(1)
while(1)
while(1)

중간생략
(총 32769개의 while문이 연속됨)

while(1)
while(1)
while(1) ;
메모리가 부족합니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

free a[100000000];
나눗셈에서 '0'으로 나눈 에러(분모가 '0'입니다)!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

a= 5;
b= 0;
c= a / b;
문법 에러!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

if abc;
#!/bin/wel

for(i=1; i<10) ;
에러 예제 Source#3[ 실행하기 ]
#!/bin/wel

a= "hello" if(b>10) c=1;
연산식 표현 에러!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

c=  a + * b;
#!/bin/wel

c= "AB"CD";
에러 예제 Source#3[ 실행하기 ] 에러 예제 Source#4[ 실행하기 ]
#!/bin/wel

a= 1, ;
#!/bin/wel

a= 1 , , b=2;
에러 예제 Source#5[ 실행하기 ] 에러 예제 Source#6[ 실행하기 ]
#!/bin/wel

while() a++;
#!/bin/wel

for(i=1; i<=10; i++, ) s+= i;
주석(Comment)이 종료되지 않았습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

c=  a + b; /* 시험중
Inline print가 종료되지 않았습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

/" 이 내용은 출력이 됩니다
#!/bin/wel

a= 1;
b= "hello";
/" a={$a} b={$b}
문자상수가 끝나지 않았거나 한 자 이상 사용 에러!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a= 'AB';
#!/bin/wel

a= ''';
문자열이 종료되지 않았습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a= "AB;
#!/bin/wel

a= """;
괄호의 짝이 맞지 않습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

c= (a + b;
#!/bin/wel

a= 3 + 4);
중괄호(Brace)의 짝이 맞지 않습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

for(i=1;i<=10;i++) {
#!/bin/wel

for(i=1;i<=10;i++) { s= s + i; } }
수치상수 에러(수치가 될 수 없습니다)!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a= 123abc;
#!/bin/wel

a= 123e;
에러 예제 Source#3[ 실행하기 ] 에러 예제 Source#4[ 실행하기 ]
#!/bin/wel

a= 0c129;
#!/bin/wel

a= 0x1Hb;
자료 형(Type)이 맞지 않습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a= 12 - "AB";
#!/bin/wel

a= "ABC" * 5;
에러 예제 Source#3[ 실행하기 ] 에러 예제 Source#4[ 실행하기 ]
#!/bin/wel

a= mid("ABCD", "A");
#!/bin/wel

a= abs("ABCD");
정의되지 않은 변수입니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

vlock a;
#!/bin/wel

vunlock b;
사용중이거나 이미 선언되었습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a= 1;

int a= 2;
#!/bin/wel

int a= 2;
float a= 1.0;
잘못된 변수명을 사용하였습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

abc.2ab= 1;
대입연산자의 왼쪽값이 변수가 아닙니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

123= 4 + 5;
#!/bin/wel

67+= 5;
읽기 전용변수는 대입할 수 없습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

a= 1;
vlock a;
a= 2;
읽기 전용변수는 해제할 수 없습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

a= 1;
vlock a;
vfree a;
임계 영역 변수를 대입 또는 해제할 수 없습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a= 1;
a= parser("vfree a; return(1)");
#!/bin/wel

free a[3];
a[3]= a= array("abc");
에러 예제 Source#3[ 실행하기 ] 에러 예제 Source#4[ 실행하기 ]
#!/bin/wel

a= 1;
a= /"{-a}"/ 2;
#!/bin/wel

a= 1;
a= strform("1234{$-a}5678");
배열이 선언되지 않았습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

int a[3];

a[1]= b[2];
#!/bin/wel

int a[3];

a[ b[1] ] = 2;
배열이 아닙니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a.b.c= 123;
d= a.b[2].c;
#!/bin/wel

a.b.c= 123;
d= a.b.c[1];
잘못된 배열 사용 에러!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

int a, b[3];

a= b;
#!/bin/wel

int a[3], b[2];

d= a && b;
c= a + b;
에러 예제 Source#3[ 실행하기 ] 에러 예제 Source#4[ 실행하기 ]
#!/bin/wel

function abc(int a) { print(a); }

int b[3];

abc(b);
#!/bin/wel

function int abc()
 {
    float a[3];

    return(a);
 }

k= abc();
배열의 차원이 선언된 것과 다릅니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

int a[3];

a[1][2]= 3;
#!/bin/wel

int a[3][3];

a[2]= 3;
배열의 첨자가 범위를 넘었습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

int a[3];

a[4]= 3;
#!/bin/wel

b= array(1,2);
c= b[2];
3차원 배열까지만 사용할 수 있습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

int a[3][4][5][6];
변수명만 사용해야 합니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

int a[3];

vfree a[2];
#!/bin/wel

free a.b[2];

vfree a.b[1];
잘못된 객체 사용 에러!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

int a.b=1;

a.b.c= 3;
#!/bin/wel

free a.b[2].c;

a.b[1].2ab= 3;
에러 예제 Source#3[ 실행하기 ] 에러 예제 Source#4[ 실행하기 ]
#!/bin/wel

int a.x= 1, b.x= 2;

c= a - b;
#!/bin/wel

free a[2].b[2];

a[0].b[0]= a;
a[0].b[0][0].b[0]= 1;
a[0].b[0][0].test= 5;
a[0].b[0].err= 7;
객체 배열이 너무 많이 중첩되었습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

int a[1].b[1].c[1].d[1].e[1].f[1].g[1].h[1].i[1];
에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

int a[1].b[1].c[1].d[1].e[1].f[1].g[1].h[1].m;
함수 정의가 잘못었습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

function int abc
 {
   printf("test\n");
 };
정의되지 않은 함수를 호출하였습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

a= abcdefg();
이미 정의된 함수는 재정의할 수 없습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

function abs(int a)
 {
    return(a);
 }
#!/bin/wel

function abc()
 {
   printf("hello!");
 }

function abc()
 {
   printf("error!");
 }
함수의 인수 개수 에러!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

x= abs(5,2);
#!/bin/wel

function int add(int a, int b)
 {
    int c;

    c= a + b;
    return(c);
 }

x= add(5);
함수의 잘못된 인자 사용 에러!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a= sqrt(-25);
#!/bin/wel

a= mid("ABCD", -1, 2);
함수의 회귀값의 자료 형(Type)이 맞지 않습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

function int abc() { return "ABC"; }

int k;

k= abc();
#!/bin/wel

function float abc() { "HELLO"; }

a= abc();
폼(관련 기능)이 너무 많이 중첩되었습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

for(i=1; i<=40; i++)
 {
    formopen("test.fom");
    printf("폼#%d 개방 , ", i);
    if(i%10==0) printf("<br>\n");
 }
폼의 repeat 명령이 너무 많이 중첩되었습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

for(form_str=NULL, i= 1; i<=40; i++)
 {
    form_str~= sprintf("{!repeat}test#%d\n", i);
 }
printf("form_str= %s\n", form_str);
a= strform(form_str);
폼 매크로 변수명의 잘못된 사용 에러!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

/"test1{$234abc}test2"/
#!/bin/wel

a= strform("test1{$234abc}test2");
폼 매크로 폭의 잘못된 사용 에러(1 ~ 255)
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

/"test1{#@500,abc}test2"/
폼 매크로 명령이 아닙니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

/"test1{!error}test2"/
폼 매크로의 레이블이 정의되지 않았습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

/"test1{!goto end_test}test2"/
폼 매크로가 종료되지 않았습니다! (Wel V1.3 이상 적용)
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

/"test1{?a,test2{?b,test3,{?c,test4}test5}test6"/
초기화 자료가 너무 많습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

int a[3]= { 1, 2, 3, 4, 5 };
#!/bin/wel

int a[2][2]= { { 1, 2, 3 }, { 4, 5, 6, 7 } };
중괄호가 변수의 차원과 일치하지 않습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

int a[3]= { { 1, 2 }, { 3, 4 } };
객체 배열은 초기화할 수 없습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

int obj[4].a= { 1, 2, 3, 4 };
#!/bin/wel

int obj.a[3].b= { 1, 2, 3 };
파일 포인터가 아닙니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a= 1;
fprint(a, "test");
#!/bin/wel

fp= fopen("존재하지 않는 파일명", "r");
line= finput(fp);
strfield 포인터가 아닙니다! (Wel V1.3 이상 적용)
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

sp= strfield_open("a,b,c,d", ",", 0x0f);
a= 0;
str= strfield(a);
MSQL 포인터가 아닙니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

a= 1;
msqlClose(a);
MSQL result 포인터가 아닙니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

a= 1;
msqlDataSeek(a, 0);
MySQL 포인터가 아닙니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

a= 1;
mysql_close(a);
MySQL result 포인터가 아닙니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

a= 1;
mysql_data_seek(a, 0);
Socket 포인터가 아닙니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

a= 1;
sockwrite(a, "b");
부 프로그램을 개방할 수 없습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

include("존재하지 않는 파일명");
#!/bin/wel

fparser("존재하지 않는 파일명");
이 함수는 웹 프로그램에서 사용할 수 없습니다!
에러 예제 Source#1[ 실행하기 ] 에러 예제 Source#2[ 실행하기 ]
#!/bin/wel

a= input();
#!/bin/wel

cls();
이 매크로는 웹 프로그램에서 사용할 수 없습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

/"a={%a}"/
프로그램 실행 제한시간을 초과하였습니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

timeout(1);
sleep(3);
CTRL-C나 CTRL-\에 의해 강제 종료됩니다!
에러 예제 Source#1[ 실행하기 ]
#!/bin/wel

// CTRL-C를 입력할 수 없기 때문에 에러를 가정하여 실행됩니다.

sleep(10);
개방되지 않았거나 이미 폐쇄되었습니다.
경고 예제 Source#1[ 실행하기 ]
#!/bin/wel

fp= fopen("/dev/null", "w");
fclose(fp);
fclose(fp); // 여기에서 경고 메시지 출력
연결되지 않았거나 이미 폐쇄되었습니다.
경고 예제 Source#1[ 실행하기 ]
#!/bin/wel

msql= msqlConnect(NULL);
msqlClose(msql);
msqlQuery(msql, "select * from test"); // 여기에서 경고 메시지 출력
결과를 저장하지 않았거나 이미 해제되었습니다.
경고 예제 Source#1[ 실행하기 ]
#!/bin/wel

msql= msqlConnect(NULL); // mSQL 서버가 운영중이고 welhelp 데이터베이스와
msqlSelectDB(msql, "welhelp"); // addr 테이블이 존재한다고 가정함
mres= msqlQueryResult(msql, "select * from addr");
msqlFreeResult(mres);
rcnt= msqlNumRows(mres); // 여기에서 경고 메시지 출력
내용이 없거나 무효한 Header를 사용했습니다.
경고 예제 Source#1[ 실행하기 ] 경고 예제 Source#2[ 실행하기 ]
#!/bin/wel

header("");
print("test");
return;
#!/bin/wel

system("date");
header("Content-type: text/html");
return;
내용이 없거나 무효한 Cookie를 사용했습니다.
경고 예제 Source#1[ 실행하기 ] 경고 예제 Source#2[ 실행하기 ]
#!/bin/wel

setcookie("","");
print("test");
return;
#!/bin/wel

system("date");
setcookie("test", "123");
return;
  Wel Version 1.0