다음: 경고 켜고 끄기, 상위 문서: 경고 다루기   [차례][찾아보기]


12.2.1 경고 발생

warning 함수를 사용하여 어디서든지 경고를 발생시킬 수 있습니다. warning 함수의 가장 간단한 형태는 경고 문자열을 입력 매개변수로 받는 것입니다.  예를 들어, 아래 부호는 변수 ‘a’가 음수이면 경고를 하고, ‘a’를 0으로 설정합니다.

a = -1;
if (a < 0)
  warning ("'a' must be non-negative.  Setting 'a' to zero.");
  a = 0;
endif
     -| 'a' must be non-negative.  Setting 'a' to zero.

경고는 풀그림 실행에 큰 지장이 되지 않기 때문에 try문 또는 이와 비슷한 기능으로 경고로 잡아낼 수 없습니다. 하지만 lastwarn 함수로 마지막 경고에 문자열로써 접근할 수 있습니다.

식별 문자열을 경고에 할당할 수도 있습니다. 경고에 식별자가 있으면, 사용자가 다음 절에 기술된 방법으로 경고를 켜거나 끌 수 있습니다. 경고에 식별자를 할당하려면, 간단하게 warning를 첫째는 식별 문자열이고 둘째는 경고문인 문자열 두 개와 호출하면 됩니다. 경고 식별자는 "이름공간:경고-이름"꼴임에 유의하십시오. 이름 공간 "Octave"는 옥타브 자체 경고를 사용합니다. 사용자 본인의 경고용으로 모든 문자열이 가능합니다.

warning (, …)
warning (식별, , …)
warning ("on", 식별자)
warning ("off", 식별자)
warning ("error", 식별자)
warning ("query", 식별자)
warning (상태, 식별자, "local")
warning (경고_구조체)
경고_구조체 = warning (…)
warning (상태, 방식)

경고 문구를 표시하거나 옥타브 경고 체계 행위를 제어합니다.

첫 번째 호출 형식은 틀 과 추가 선택 매개변수를 사용하여 stderr 흐름에 안내를 표시합니다. 안내는 printf 가족 함수에서 쓰는 것과 똑같은 규칙(형식 있는 출력 참고)을 쓰며, 문자 문자열 ‘warning: 을 접두사로 붙입니다. 이 함수는 비정상적인 상황을 사용자에게 알리고 싶지만, 풀그림을 멈추고 싶지는 않을 때 사용하여야 합니다.

warning ("foo: maybe something wrong here");

경고 문구가 새 줄 문자로 끝나지 않으면, 옥타브는 경고 앞에 있는 모든 함수 호출의 추적을 출력합니다. 경고 문구가 새 줄 문자로 끝나면, 최상위에 제어권을 넘길 때 추적을 하지 않습니다. 자세한 내용과 예시는 오류를 보십시오.

선택 경고 식별자 식별자로 식별자에 연결된 경고를 사용자가 켜거나 끌 수 있습니다. 문구 식별자는 "이름공간:경고-이름"꼴인 문자열입니다. 옥타브 자체 경고는 이름공간으로 "Octave"를 사용합니다.(경고 식별자 참고) 예시:

warning ("MyNameSpace:check-something",
         "foo: maybe something wrong here");

두 번째 호출 형식은 경고 상태를 바꾸거나 조회합니다. 첫 번째 입력 매개변수는 반드시 문자열 상태 ("on", "off", "error", "query")이고, 뒤 따라서 선택 경고 식별자 식별자 또는 "all"(기본)이 있습니다..

선택 출력 매개변수 경고_구조체는 기록란이 "state""identifier"인 구조체 또는 구조체 배열입니다. 상태 매개변수는 아래 값을 가집니다.

"on"|"off":

식별자에 연결된 경고의 표시를 켜거나 끄고, 선택적으로 stout에 이전 상태를 반환합니다.

"error":

식별자에 연결된 경고를 오류로 처리되게 하고, 선택적으로 stout에 이전 상태를 반환합니다.

"query":

식별자에 연결된 경고의 상태를 반환합니다.

기록란 "state""identifier"이 있는 구조체 또는 구조체 배열인 경고 구조체는 구조체와 똑같은 결과를 내기 위하여 입력으로 사용하기도 합니다. 아래 예시는 경고를 잠시 껐다가 다시 켜는 방법을 보여줍니다.

loglog (-1:10);
## 이전 경고의 상태를 저장하고, 끕니다.
[~, id] = lastwarn ();
warnstate = warning ("off", id);
loglog (-1:10);
## 이전 경고를 다시 원상태로 복구합니다.
warning (warnstate);

마지막 매개변수가 "local"이면 경고가 현재 함수가 끝날 때까지만 잠시 설정됩니다. 울안에서 경고 상태를 바꾸면 현재 함수와 현재 유효 범위 안에서 호출한 모든 함수에만 영향을 끼칩니다. 현재 함수가 끝나면 경고가 기존 상태로 돌아갑니다. 최상위 작업 공간에서는 "local" 매개변수를 무시합니다.

입력 매개변수가 없는 warning ()은 경고 상태가 출력 매개변수 stderr에 표시되지 않는 warning ("query", "all")와 같습니다.

경고 체계의 상세 설명 수준은 두 가지 방식 방식으로 제어합니다.

"backtrace":

경고 문구 뒤에 동전통 추적 여부를 결정합니다.

"verbose":

경고 안내 뒤에 추가 정보 표시 여부를 결정합니다.

상태 매개변수는 "on""off"로만 결정합니다.

실행 안내: 매트랩과의 호환을 위하여 이 홑따옴표 문자열이어도 두 개 이상의 입력 매개변수가 있으면 확장열(예: 새 줄용 "\n" )이 작동합니다. 홑따옴표 문자열에서 확장열을 사용하지 않으려면, 확장문자열 앞에 빗금을 두 개 치거나(예: "\\n") regexptranslate 함수를 사용하십시오.

같이 보기: warning_ids, lastwarn, error.

[문구, 문구_식별자] = lastwarn ()
lastwarn (문구)
lastwarn (문구, 문구_식별자)

마지막 경고 문구를 조회하거나 설정합니다.

입력 매개변수 없이 호출하면, 마지막 경고 문구와 문구 식별자를 반환합니다.

매개변수가 하나이면, 마지막 경고 문구를 문구로 바꿉니다.

매개변수가 두 개이면, 마지막 문구 식별자도 설정합니다.

같이 보기: warning, lasterror, lasterr.

옥타브와 함께 배포된 함수는 아래 경고 중 하나입니다.

Octave:abbreviated-property-match

기본적으로 Octave:abbreviated-property-match 경고는 켜져 있습니다.

Octave:addpath-pkg

Octave:addpath-pkg 경고를 켜면, 꾸러미 자료방(예 +꾸러미_이름)이 경로에 추가될 때 경고합니다. 일반적으로 꾸러미 자료방을 지닌 부모 자료방만 적재 경로에 추가합니다. 기본적으로 Octave:addpath-pkg는 켜져 있습니다.

Octave:array-as-logical

If the Octave:array-as-logical warning is enabled, Octave will warn when an array of size greater than 1x1 is used as a truth value in an if, while or until statement. By default, the Octave:array-as-logical warning is disabled.

Octave:array-to-scalar

Octave:array-to-scalar 경고를 켜면, 배열이 스칼라 값으로 묵시적 변환이 시도될 때, 경고합니다. 기본적으로 Octave:array-to-scalar 경고는 꺼져 있습니다.

Octave:array-to-vector

Octave:array-to-vector 경고를 켜면, 배열이 벡터 값으로 묵시적 변환이 시도될 때, 경고합니다. 기본적으로 Octave:array-to-vector 경고는 꺼져 있습니다.

Octave:assign-as-truth-value

Octave:assign-as-truth-value 경고를 켜면,표현식이 아래와 같을 때 경고를 합니다.

if (s = t)
  …

위 표현식은 일반적이지 않고, 아래 표현식을 의도했을 가능성이 크기 때문입니다.

if (s == t)
  …

while문과 if문의 조건식 안에 할당식을 써 넣는 것이 유용할 때도 있습니다. 예를 들어, 아래 표현식은

while (c = getc ())
  …

C 풀그림을 짤 때 자주 있습니다.

Octave:assign-as-truth-value 경고를 끄면 이러한 모든 경고가 사라지지만, 아래와 같은 진짜 오류를 지나치게 됩니다.

if (x = 1)  # (x == 1)를 의도함!
  …

이러한 경우에는 괄호를 더해주어서 특정 표현식에서 경고가 안 나게 할 수 있습니다. 예를 들어, 아래처럼 쓰면

while ((c = getc ()))
  …

다른 곳에서는 조건식에 할당식을 쓸 때 경고가 나더라도, 위 표현식을 처리할 때는 경고가 안 납니다.

기본적으로 Octave:assign-as-truth-value 경고는 켜져 있습니다.

Octave:associativity-change

Octave:associativity-change 경고를 켜면, 일부 연산자의 결합이 바뀌어 일부 부호의 의미가 달라질 수 있음을 경고합니다. 보통 매트랩 호환 때문에 결합이 바뀝니다. 기본적으로 Octave:associativity-change 경고는 켜져 있습니다.

Octave:autoload-relative-file-name

Octave:autoload-relative-file-name 경고를 켜면, 함수 기록철을 상대 경로로 호출하는 autoload() 함수를 구문 분석할 때 경고합니다. 보통 autoload()가  autoload() 명령이 참조하는 .oct 기록철과 다른 자료방에 있는 PKG_ADD 기록철을 호출하는 데에 사용할 때 발생합니다. 기본적으로 Octave:autoload-relative-file-name 경고는 켜져 있습니다.

Octave:built-in-variable-assignment

기본적으로 Octave:built-in-variable-assignment 경고는 켜져 있습니다.

Octave:deprecated-function

Octave:deprecated-function 경고를 켜면, 구식 또는 삭제가 예정된 함수가 있을 때 경고합니다. 기본적으로 Octave:deprecated-function 경고는 켜져 있습니다.

Octave:deprecated-keyword

Octave:deprecated-keyword 경고를 켜면, 구식 또는 삭제가 예정된 예약어가 있을 때 경고합니다. 기본적으로 Octave:deprecated-keyword 경고는 켜져 있습니다.

Octave:deprecated-property

Octave:deprecated-property 경고를 켜면, 구식 또는 삭제가 예정된 그림 자산이 있을  때 경고합니다. 기본적으로 Octave:deprecated-property 경고는 켜져 있습니다.

Octave:divide-by-zero

Octave:divide-by-zero 경고를 켜면, 0으로 나눌 때 경고합니다. 기본적으로 Octave:divide-by-zero 경고는 켜져 있습니다.

Octave:eigs:UnconvergedEigenvalues

Octave:eigs:UnconvergedEigenvalues 경고를 켜면, 계산한 고윳값 개수가 요청한 고윳값 개수보다 적을 때 고윳값 함수가 경고합니다. 기본적으로 Octave:eigs:UnconvergedEigenvalues 경고는 켜져 있습니다.

Octave:erase:chararray

Octave:erase:chararray 경고를 켜면, 삭제 함수의 입력 경향이 문자열이나 낱칸 배열인 문자열이 아닌 문자 배열일 때 경고합니다. 기본적으로 Octave:erase:chararray 경고는 켜져 있습니다.

Octave:data-file-in-path

Octave:data-file-in-path 경고를 켜면, loadfopen 같은 기록철 명령에서 목표를 직접 찾지 못했으나 기록철용 옥타브 검색 경로 경로에서 해당 기록철을 찾았을 때 경고합니다. 이 경고는 사용자가 사용하려 한 기록철과 다른 기록철을 사용함을 보여줍니다. 기본적으로 Octave:data-file-in-path 경고는 켜져 있습니다.

Octave:function-name-clash

Octave:function-name-clash 경고를 켜면, 옥타브가 함수 기록철의 이름과 그 기록철이 정의한 함수의 이름이 다름을 확인했을 때 경고합니다.(이름이 같지 않으면 기록철 안에서 선언한 이름을 무시합니다.) 기본적으로 Octave:function-name-clash 경고는 켜져 있습니다.

Octave:future-time-stamp

Octave:future-time-stamp 경고를 켜면, 함수 기록철의 날짜 도장이 미래 날짜일 때 경고합니다. 기본적으로 Octave:future-time-stamp 경고는 켜져 있습니다.

Octave:glyph-render

기본적으로 Octave:glyph-render 경고는 켜져 있습니다.

Octave:imag-to-real

Octave:imag-to-real 경고를 켜면, 복소수의 실수로의 묵시적 변환을 경고합니다. 기본적으로 Octave:imag-to-real 경고는 꺼져 있습니다.

Octave:language-extension

매트랩에 없을 가능성이 있는 옥타브의 고유한 기능을 사용할 때 경고합니다. 기본적으로 Octave:language-extension 경고는 꺼져 있습니다. 옥타브의 시작 매개변수인 --traditional이나 --braindead이 사용된 경우에는 명령줄 매개변수를 참고하십시오.

Octave:legacy-function

Octave:legacy-function 경고를 켜면, 매트랩에서 사용 자제를 권고하는 함수를 만났을 때 경고합니다. 해당 함수는 미래의 어느 시점에는 구식이 되어 Octave:deprecated-function 경고가 대신 나오고 사라질 것이며, 사라지기 직전 두 판본의 옥타브에서 잔존할 것입니다. 기본적으로 Octave:legacy-function 경고는 켜져 있습니다.

Octave:logical-conversion

기본적으로 Octave:logical-conversion 경고는 켜져 있습니다.

Octave:lu:sparse_input

Octave:lu:sparse_input 경고를 켜면, 행렬 분해 함수가 희소 행렬을 입력받고 출력 매개변수가 4 개보다 적을 때 경고합니다. 이 경우에는 희소성을 유지하는 열 순열이 작동하지 않고, 결과에 오류가 있을 수 있습니다. 기본적으로 Octave:lu:sparse_input 경고는 켜져 있습니다.

Octave:missing-glyph

기본적으로 Octave:missing-glyph 경고는 켜져 있습니다.

Octave:missing-semicolon

Octave:missing-semicolon 경고를 켜면, 함수 정의에 있는 표현식이 쌍반점으로 끝나지 않을 때 경고합니다. 기본적으로 Octave:missing-semicolon 경고는 꺼져 있습니다.

Octave:mixed-string-concat

Octave:mixed-string-concat 경고를 켜면, 겹따옵표와 홑따옴표를 혼재하여 사용할 때 경고합니다. 기본적으로, Octave:mixed-string-concat 경고는 꺼져 있습니다.

Octave:nearly-singular-matrix
Octave:singular-matrix

비가역 행렬이나 그에 준하는 행렬의 역행렬을 만들 때 경고합니다. 기본적으로, Octave:nearly-singular-matrixOctave:singular-matrix 경고는 켜져 있습니다.

Octave:neg-dim-as-zero

Octave:neg-dim-as-zero 경고를 켜면, 아래 같은 표현식에 대하여 경고합니다.

eye (-1)

기본적으로 Octave:neg-dim-as-zero 경고는 꺼져 있습니다.

Octave:nested-functions-coerced

기본적으로 Octave:nested-functions-coerced 경고는 켜져 있습니다.

Octave:noninteger-range-as-index

기본적으로 Octave:noninteger-range-as-index 경고는 켜져 있습니다.

Octave:num-to-str

Octave:num-to-str 경고를 켜면, 문자열과 숫자가 같이 쓰인 행렬을 문자열로 만들어 숫자가 맞물리는 UTF-8 부호 문자로 묵시적으로 변환될 때 경고합니다. 예를 들어,

[ "f", 111, 111 ]
⇒ "foo"

Octave:num-to-str 경고가 켜져 있으면 경고가 나옵니다. 기본적으로 Octave:num-to-str 경고는 켜져 있습니다.

Octave:possible-matlab-short-circuit-operator

Octave:possible-matlab-short-circuit-operator 경고를 켜면, ifwhile 조건식에 단락 연산자가 아닌 &|을 사용하면 경고합니다. 일반적으로 &|는 단락 평가를 전혀하지 않지만, 조건식 안에서 쓰면 단락 평가를 합니다. 기본적으로 Octave:possible-matlab-short-circuit-operator 경고는 켜져 있습니다.

Octave:precedence-change

Octave:precedence-change 경고를 켜면, 일부 연산자의 우선순위 변화 때문에 일부 부호의 의미가 바뀔 가능성을 경고합니다. 우선순위 변화는 보통 매트랩 호환 때문에 발생합니다. 기본적으로 Octave:precedence-change 경고는 켜져 있습니다.

Octave:recursive-path-search

기본적으로 Octave:recursive-path-search 경고는 켜져 있습니다.

Octave:remove-init-dir

옥타브가 함수를 찾을 검색 경로를 경로 함수가 바꿉니다. 옥타브 자체 내장 함수가 제외된 값을 경로로 설정할 가능성이 있습니다. Octave:remove-init-dir 경고를 켜면, 경로 함수가 옥타브를 작동불능하게 할 수 있는 방식으로 사용될 때 경고합니다. 기본적으로 Octave:remove-init-dir 경고는 켜져 있습니다.

Octave:reload-forces-clear

같은 기록철에서 여러 함수를 적재한 경우,  그 중 한 개라도 다시 적재하려면 먼저 모든 함수를 지워야 합니다. Octave:reload-forces-clear 경고를 켜면, 이 경우에 경고를 해 주며, 추가로 지울 함수 목록을 출력합니다. 기본적으로 Octave:reload-forces-clear 경고는 켜져 있습니다.

Octave:resize-on-range-error

Octave:resize-on-range-error 경고를 켜면, 현재 행렬 크기를 넘게 색인된 할당으로 인한 행렬 크기 조정시 경고합니다. 기본적으로 Octave:resize-on-range-error 경고는 꺼져 있습니다.

Octave:separator-insert

글자 행렬 안에 자동으로 반점이나 쌍반점이 삽입되면 경고합니다. 기본적으로 Octave:separator-insert 경고는 꺼져 있습니다.

Octave:shadowed-function

기본적으로 Octave:shadowed-function 경고는 켜져 있습니다.

Octave:single-quote-string

홑따옴표로 문자열 상수를 만들면 경고합니다. 기본적으로 Octave:single-quote-string 경고는 꺼져 있습니다.

Octave:sqrtm:SingularMatrix

기본적으로 Octave:sqrtm:SingularMatrix 경고는 켜져 있습니다.

Octave:str-to-num

Octave:str-to-num 경고를 켜면, 문자열을 UTF-8로 부호화된 바이트 연속 수치로 묵시적으로 변환할 때 경고합니다. 예를 들어,

"abc" + 0
⇒ 97 98 99

Octave:str-to-num 경고를 켜면 경고가 나옵니다. 기본적으로 Octave:str-to-num 경고는 꺼져 있습니다.

Octave:variable-switch-label

Octave:variable-switch-label 경고를 켜면, switch문의 보람이 상수 또는 상수 표현식이 아닐 때 경고합니다. 기본적으로 Octave:variable-switch-label 경고는 꺼져 있습니다.


다음: 경고 켜고 끄기, 상위 문서: 경고 다루기   [차례][찾아보기]