<?xml version="1.0" encoding="UTF-8"?>
<!--
 *
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2010 - 2011 - DIGITEO - Michael Baudin
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="assert_generror" xml:lang="ja">
    <refnamediv>
        <refname>assert_generror</refname>
        <refpurpose>エラーを生成する.</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>呼び出し手順</title>
        <synopsis>
            assert_generror ( errormsg )
            assert_generror ( errormsg , errornb )
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>パラメータ</title>
        <variablelist>
            <varlistentry>
                <term>expectedmsg :</term>
                <listitem>
                    <para>
                        1行1列の文字列行列, 出力するエラーメッセージ
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>expectederrnb :</term>
                <listitem>
                    <para>
                        1行1列のdouble行列,整数値,エラー番号
                        (デフォルト: expectederrnb=[]).
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>説明</title>
        <para>
            指定した引数でエラー関数をコールします.
        </para>
        <para>
            この関数は,予測された出力と計算された出力が一致しない
            エラーが発生する度にassert_check* 関数によりコールされます.
            assert_check* 関数に指定された
            入力引数の数,出力引数の数,入力引数の型,
            または入力引数の内容が間違っている場合,
            通常のエラー関数がコールされます.
            この関数はassert_check* 関数の動作を修正するために
            カスタマイズできます.
        </para>
        <para>
        </para>
    </refsection>
    <refsection>
        <title>例</title>
        <programlisting role="example"><![CDATA[
// 以下のコールは共にエラーを発生します
assert_generror ( "oups" );
assert_generror ( "oups" , 123456789 );
// 以下のコールはエラーを発生します
assert_checktrue ( [%t %f] );
//
// エラーハンドラを定義します
function myerror ( varargin )
    [lhs,rhs]=argn()
    errormsg = varargin(1)
    if ( rhs == 1 ) then
        mprintf( "myerror: %s\n", errormsg )
    else
        errornb = varargin(2)
        mprintf( "myerror: %s (%d)\n", errormsg , errornb )
    end
endfunction
//
// 新しいエラーハンドラを設定
back=funcprot();
funcprot(0);
olderrorfunction = assert_generror;
assert_generror = myerror;
funcprot(back);
//
// 新しいエラーハンドラが設定されたことを確認
assert_checktrue ( [%t %f] );
//
// 通常のエラーハンドラに戻します
back=funcprot();
funcprot(0);
assert_generror = olderrorfunction;
funcprot(back);
   ]]></programlisting>
    </refsection>
    <refsection>
        <title>履歴</title>
        <revhistory>
            <revision>
                <revnumber>5.4.0</revnumber>
                <revdescription>関数が導入されました
                </revdescription>
            </revision>
        </revhistory>
    </refsection>
</refentry>
