プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

VB6でエラー処理を行う。

この記事は2018年10月24日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. エラー処理
    2-1. エラーステートメント
    2-2. Errオブジェクト
    2-3. 実装例
  3. おわりに

決定版 Visual Basic6.0―アプリケーション開発とプログラミング

決定版 Visual Basic6.0―アプリケーション開発とプログラミング

  • 作者: 阪口良史,中山浩太郎,吉田博哉,藤田勇一,吉川弘一郎,吉田充宏,田中成典
  • 出版社/メーカー: 共立出版
  • 発売日: 2000/06/01
  • メディア: 単行本
  • クリック: 2回
  • この商品を含むブログを見る

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているVB6のお話です。

目次へ

2. エラー処理

2-1. エラーステートメント

VB6でエラー処理を行うには、以下のエラーステートメントを使用します。

  1. On Error GoTo <ラベル名> ステートメント
    エラールーチンを有効にします。
    実行時エラーが発生すると、指定したラベル名の処理を行います。

  2. On Error GoTo 0 ステートメント
    エラールーチンを無効にします。
    実行時エラーが発生しても、エラー処理しません。

  3. On Error Resume Next ステートメント
    実行時エラーが発生しても、エラーが発生した次の行から処理を継続します。

  4. On Error GoTo <ラベル名> ステートメント + Resume Nextステートメント
    エラールーチンを有効にします。
    実行時エラーが発生すると、指定したラベル名の処理を行います。
    エラー処理後、処理を継続したい場合、Resume Nextステートメントを呼び出し、処理を継続します。

目次へ

2-2. Errオブジェクト

実行時エラーに関する情報は、Errオブジェクトに設定されます。
以下はErrオブジェクトに設定される情報です。

プロパティ名 内容
Number エラー番号
Description エラー内容
Source エラー発生元のオブジェクト名
LastDLLError DLL呼び出しによるエラーコード

またErrオブジェクトには、以下の機能があります。

関数名 機能
Clear エラー情報をクリアします
Raise 実行時エラーを生成します

目次へ

2-3. 実装例

On Error GoTo <ラベル名> ステートメント

Private Sub Command1_Click()
    '実行時エラーが発生した場合、ErrorHandlerラベルの処理を行います。
    On Error GoTo ErrorHandler

    ’例)実行時エラーが起きる処理
    Dim x As Integer
    x = x / 0

    Exit Sub
  
ErrorHandler:
    'ここでエラー処理を行ってください。
    ’例)エラー情報を表示します。
    Call MsgBox("エラー番号:" & Err.Number & vbCrLf & "エラー内容:" & Err.Description)
End Sub

On Error GoTo 0 ステートメント

Private Sub Command1_Click()
    '実行時エラーが発生した場合、ErrorHandlerラベルの処理を行います。
    On Error GoTo ErrorHandler
    
    ’例)実行時エラーが起きる処理
    'このエラーはハンドリングされます。
    Dim x As Integer
    x = x / 0
    
    On Error GoTo 0
    'これ以降で発生した実行時エラーはハンドリングされません。
    ’例)実行時エラーが起きる処理
    'このエラーはハンドリングされません。
    Dim y As Integer
    y = y / 0
    
    Exit Sub
ErrorHandler:
    'ここでエラー処理を行ってください。
    ’例)エラー情報を表示します。
    Call MsgBox("エラー番号:" & Err.Number & vbCrLf & "エラー内容:" & Err.Description)
End Sub

On Error GoTo Resume Next ステートメント

Private Sub Command1_Click()
    '実行時エラーが発生しても処理を継続します。
    On Error Resume Next
    
    ’例)実行時エラーが起きる処理
    'このエラーは無視されます。
    Dim x As Integer
    x = 1 / 0
    
    '実行時エラーが起きても、次の処理が実行されます。
    Call MsgBox("処理を継続します")
End Sub

On Error GoTo <ラベル名> ステートメント + Resume Nextステートメント

Private Sub Command1_Click()
    '実行時エラーが発生した場合、ErrorHandlerラベルの処理を行います。
    On Error GoTo ErrorHandler

    ’例)実行時エラーが起きる処理
    Dim x As Integer
    x = x / 0

    '処理を継続します。
    Call MsgBox("処理を継続します")

    Exit Sub
  
ErrorHandler:
    'ここでエラー処理を行ってください。
    ’例)エラー情報を表示します。
    Call MsgBox("エラー番号:" & Err.Number & vbCrLf & "エラー内容:" & Err.Description)
      
    'エラーが発生した行の次の行から処理を継続します。
    Resume Next
End Sub

目次へ

4. おわりに

VB6にJavaのような例外処理があるとは思いませんでした。
結構便利に使える印象です。

残念ながら業務で見たコードはほとんどエラー処理されていませんでしたが、自分で組む時はきちんとエラー処理したいと思います。

未経験から最短でエンジニア転職を目指す

かんたんプログラミングVisual Basic6 基礎編

かんたんプログラミングVisual Basic6 基礎編

紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。

目次へ


私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。

また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。

EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688

目次へ