例外クラス

Namespace: FVIL
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
[SerializableAttribute]
public class CFviException : Exception, 
	ICloneable, IFviCopyable, IDisposable
Visual Basic
<SerializableAttribute>
Public Class CFviException
	Inherits Exception
	Implements ICloneable, IFviCopyable, IDisposable

Remarks

FVILクラスで発生した例外を通知する為のクラスです。

このライブラリの例外は、このクラス1種類だけで通知されます。 例外の内容は、このクラスの ErrorCode に設定されたエラーコードで識別してください。 発生場所は、Function に設定されています。 現在のところ、System.ExceptionMessage メンバでの通知は完全には対応していません。

また、エラーコードは整数で格納されていますが、 これを定数名(文字列)に変換する機能も対応していませんので、 各カテゴリの ErrorCode クラスに定義された定数値と照合してください。


エラーコード(開始番号)とカテゴリの対応
エラーコード
(開始番号)
カテゴリクラス
0,1~共通FVIL.ErrorCode
11000~2値ブローブ解析FVIL.Blob.ErrorCode
11100~バーコード認識FVIL.Barcode.ErrorCode
12000~キャリパーFVIL.Caliper.ErrorCode
12100~階調変換FVIL.Conversion.ErrorCode
13000~画像オブジェクトFVIL.Data.Image.ErrorCode
13100~パタンオブジェクトFVIL.Data.Pattern.ErrorCode
13200~デジタル入出力FVIL.Dio.ErrorCode
14000~エッジ検出FVIL.Edge.ErrorCode
15000~フィルタFVIL.Filter.ErrorCode
16000~表示機能FVIL.GDI.ErrorCode
16100~幾何変換FVIL.GeoTrans.ErrorCode
17000~ハフ検出FVIL.Hough.ErrorCode
21000~最小自乗法FVIL.LSM.ErrorCode
22100~モルフォロジFVIL.Morphology.ErrorCode
24000~画像演算FVIL.Operation.ErrorCode
25000~画像ペイントFVIL.Paint.ErrorCode
25100~極座標変換FVIL.PolarTrans.ErrorCode
27000~ロバスト推定FVIL.Robust.ErrorCode
28000~特徴点応用マッチングFVIL.FPM.ErrorCode
28100~正規化相関サーチFVIL.GSearch.ErrorCode
31000~ビデオ入力FVIL.Video.ErrorCode

Examples

例外処理のコード例 (1):

下記のように FVIL.CFviException で catch した例外のインスタンス(ex)の Function メンバ と ErrorCode メンバから 例外の発生場所と原因を取得できます。

C# Copy imageCopy
//    $Revision: 1.2 $

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using fvalgcli;    // FvPluginXXXX attribute requires fvalgcli

namespace User.SampleCode
{
    public partial class Basic
    {
        /// <summary>
        /// 例外処理 (1)
        /// </summary>
        [FvPluginExecute]
        public void Exception1()
        {
            try
            {
                double ans = divide1(10, 0);    // (!) この関数が例外を発行します.
            }
            catch (FVIL.CFviException ex)
            {
                Console.WriteLine("ErrorCode={0} Function={1}", ex.ErrorCode, ex.Function);
            }
        }

        /// <summary>
        /// 除算関数.
        /// </summary>
        /// <param name="value1">左辺 (分子)</param>
        /// <param name="value2">右辺 (分母)</param>
        /// <returns>除算結果を返します.</returns>
        private double divide1(double value1, double value2)
        {
            if( value2 == 0.0 )
                throw new FVIL.CFviException(FVIL.ErrorCode.INVALID_PARAMETER, "divide1");
            return value1 / value2;
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports System.Drawing
Imports fvalgcli
' FvPluginXXXX attribute requires fvalgcli
Namespace SampleCode
    Public Partial Class Basic
        ''' <summary>
        ''' 例外処理 (1)
        ''' </summary>
        <FvPluginExecute> _
        Public Sub Exception1()
            Try
                    ' (!) この関数が例外を発行します.
                Dim ans As Double = divide1(10, 0)
            Catch ex As FVIL.CFviException
                Console.WriteLine("ErrorCode={0} Function={1}", ex.ErrorCode, ex.[Function])
            End Try
        End Sub

        ''' <summary>
        ''' 除算関数.
        ''' </summary>
        ''' <param name="value1">左辺 (分子)</param>
        ''' <param name="value2">右辺 (分母)</param>
        ''' <returns>除算結果を返します.</returns>
        Private Function divide1(value1 As Double, value2 As Double) As Double
            If value2 = 0.0 Then
                Throw New FVIL.CFviException(FVIL.ErrorCode.INVALID_PARAMETER, "divide1")
            End If
            Return value1 / value2
        End Function
    End Class
End Namespace

実行結果:
ErrorCode=11 Function=divide1



例外処理のコード例 (2):

例外の説明を付加する場合は下記のように記述します。

C# Copy imageCopy
//    $Revision: 1.2 $

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using fvalgcli;    // FvPluginXXXX attribute requires fvalgcli

namespace User.SampleCode
{
    public partial class Basic
    {
        /// <summary>
        /// 例外処理 (2)
        /// </summary>
        [FvPluginExecute]
        public void Exception2()
        {
            try
            {
                double ans = divide2(10, 0);    // (!) この関数が例外を発行します.
            }
            catch (FVIL.CFviException ex)
            {
                Console.WriteLine("ErrorCode={0} Function={1} Message={2}", ex.ErrorCode, ex.Function, ex.Message);
            }
        }

        /// <summary>
        /// 除算関数.
        /// </summary>
        /// <param name="value1">左辺 (分子)</param>
        /// <param name="value2">右辺 (分母)</param>
        /// <returns>除算結果を返します.</returns>
        private double divide2(double value1, double value2)
        {
            // (!) 3番目の引数は Message に格納する文字列を指定します.
            if (value2 == 0.0)
                throw new FVIL.CFviException(FVIL.ErrorCode.INVALID_PARAMETER, "divide2", "分母が 0 です。");
            return value1 / value2;
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports System.Drawing
Imports fvalgcli
' FvPluginXXXX attribute requires fvalgcli
Namespace SampleCode
    Public Partial Class Basic
        ''' <summary>
        ''' 例外処理 (2)
        ''' </summary>
        <FvPluginExecute> _
        Public Sub Exception2()
            Try
                    ' (!) この関数が例外を発行します.
                Dim ans As Double = divide2(10, 0)
            Catch ex As FVIL.CFviException
                Console.WriteLine("ErrorCode={0} Function={1} Message={2}", ex.ErrorCode, ex.[Function], ex.Message)
            End Try
        End Sub

        ''' <summary>
        ''' 除算関数.
        ''' </summary>
        ''' <param name="value1">左辺 (分子)</param>
        ''' <param name="value2">右辺 (分母)</param>
        ''' <returns>除算結果を返します.</returns>
        Private Function divide2(value1 As Double, value2 As Double) As Double
            ' (!) 3番目の引数は Message に格納する文字列を指定します.
            If value2 = 0.0 Then
                Throw New FVIL.CFviException(FVIL.ErrorCode.INVALID_PARAMETER, "divide2", "分母が 0 です。")
            End If
            Return value1 / value2
        End Function
    End Class
End Namespace

実行結果:
ErrorCode=11 Function=divide2 Message=分母が 0 です。

Inheritance Hierarchy

System..::..Object
System..::..Exception
FVIL..::..CFviException

See Also