例外クラス
Namespace: FVILAssembly: 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.Exception の Message メンバでの通知は完全には対応していません。
また、エラーコードは整数で格納されていますが、 これを定数名(文字列)に変換する機能も対応していませんので、 各カテゴリの 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):
実行結果:
例外処理のコード例 (2):
実行結果:
下記のように FVIL.CFviException で catch した例外のインスタンス(ex)の Function メンバ と ErrorCode メンバから 例外の発生場所と原因を取得できます。
C# | Copy |
---|---|
// $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 |
---|---|
' $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 |
---|---|
// $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 |
---|---|
' $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
System..::..Exception
FVIL..::..CFviException