Difference between revisions of "EN/Documentation/BASIC Guide/Error Handling"

From Apache OpenOffice Wiki
Jump to: navigation, search
(New page: {{EN/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentation/BASIC Guide/Procedures and Functions |NextPage=Documentation/BASIC Guide/Runtime Library...)
 
Line 6: Line 6:
 
|lang=block
 
|lang=block
 
}}
 
}}
{{DISPLAYTITLE:エラー処理}}
+
{{DISPLAYTITLE:Gestione degli errori}}
 
   
 
   
プログラミングを進める際に大きな問題となるのが、エラーに対する修正作業です。{{OOo}} Basic には、エラー処理用に機能が各種用意されています。
+
La corretta gestione delle situazioni di errore è una delle attività di programmazione che richiede più tempo. {{OOo}} Basic fornisce un'ampia gamma di strumenti per semplificare la gestione degli errori.
  
==<tt>On Error</tt> 命令 ==
+
== L'istruzione <tt>On Error</tt>==
  
<tt>On Error</tt> 命令は、エラー処理の中心となる機能です。
+
L'istruzione <tt>On Error</tt> è fondamentale per la gestione degli errori:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 24: Line 24:
 
</source>
 
</source>
  
<tt>ここで On Error Goto ErrorHandler</tt> 行により、{{OOo}} Basic が、エラー発生時にどのように動作するか指定しています。たとえばこの場合の <tt>Goto ErrorHandler</tt> は、現在の実行行を中断させて、{{OOo}} で指定するコードブロックを <tt>ErrorHandler:</tt> Basic に実行させます。
+
La riga <tt>On Error Goto ErrorHandler</tt> definisce il modo in cui {{OOo}} Basic procede in caso di errori. L'istruzione <tt>Goto ErrorHandler</tt> verifica che {{OOo}} Basic esca dalla riga di programma corrente, quindi esegue il codice <tt>ErrorHandler:</tt>.
  
==<tt>Resume コマンド</tt>==
+
== Il comando <tt>Resume</tt>==
  
<tt>Resume Next</tt> コマンドを使うと、エラーハンドラ用コードを実行した後で、エラー発生行の次の行にプログラム実行を戻して、処理を再開させることができます。
+
Il comando <tt>Resume Next</tt> fa proseguire il programma dalla riga seguente al punto in cui si è verificato l'errore nel programma, dopo l'esecuzione del codice nel gestore di errori:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 36: Line 36:
 
</source>
 
</source>
  
また <tt>Resume Proceed</tt> コマンドを使用すると、エラーハンドラ用コードを実行した後のプログラムの実行開始位置を指定することができます。
+
Usate il comando <tt>Resume Proceed</tt> per specificare il punto in cui far proseguire il programma dopo la gestione dell'errore:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 47: Line 47:
 
</source>
 
</source>
  
エラーが発生した際に、エラーメッセージを\'95\'5c示させずにプログラムを継続させるには、以下のように記述します。
+
Per far proseguire un programma senza un messaggio di errore quando si verifica un
 +
errore, utilizzate il formato seguente:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 56: Line 57:
 
</source>
 
</source>
  
この <tt>On Error Resume Next</tt> コマンドの作用範囲はプログラム全域に及ぶので、使用する際には注意が必要です。
+
Utilizzate il comando <tt>On Error Resume Next</tt> con cautela, perché ha un effetto globale.
  
== エラーの関連情報の取得 ==
+
== Ricerche riguardanti informazioni sugli errori ==
  
エラー処理を行う場合、エラーの内容と発生箇所の情報が確認できると有用です。
+
Nella gestione degli errori, è utile disporre di una descrizione dell'errore e sapere dove e perché si è verificato:
  
*<tt>Err</tt> 変数には、発生したエラー番号が格納されます。
+
* La variabile <tt>Err</tt> contiene il numero di errori verificatisi.
*<tt>Error$</tt> 変数には、発生したエラーの内容が格納されます。
+
* La variabile <tt>Error$</tt> contiene una descrizione dell'errore.
*<tt>Erl</tt> 変数には、エラーの発生した行番号が格納されます。
+
* La variabile <tt>Erl</tt> contiene il numero della riga in cui si è verificato l'errore.
  
このメ\'83\'5cッドは、以下のような形式で使用します。
+
La chiamata
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 72: Line 73:
 
</source>
 
</source>
  
この場合は、メッセージウィンドウにエラーの内容が\'95\'5c示されます。
+
mostra come l'informazione sull'errore può essere visualizzata in una finestra di messaggio.
  
{{Documentation/Note|エラーの内容は、{{OOo}} Basic では <tt>Err,</tt> <tt>Error$</tt><tt>Erl</tt> 変数に格納されますが、VBA では <tt>Err</tt> という名前のオブジェクトにまとめられます。}}
+
{{Documentation/Note|Mentre VBA riassume i messaggi di errore in un oggetto statistico denominato <tt>Err</tt>, {{OOo}} Basic fornisce le variabili <tt>Err,</tt> <tt>Error$</tt> e <tt>Erl</tt>.}}
  
これらのエラー情報は、次に <tt>Resume</tt> または <tt>On Error</tt> コマンドを実行するまで維持され、これらを実行した段階でリセットされます。
+
Le informazioni di stato rimangono valide finché il programma non incontra un comando <tt>Resume</tt> o <tt>On Error</tt>, quindi l'informazione viene ripristinata.
  
{{Documentation/Note|VBA では、<tt>Err.Clear</tt> オブジェクトに対する <tt>Err</tt> メソッドにより、エラー情報をリセットします。{{OOo}} Basic では、<tt>On Error</tt> および <tt>Resume</tt> コマンドがこの機能を果たしています。}}
+
{{Documentation/Note|In VBA, il metodo <tt>Err.Clear</tt> dell'oggetto <tt>Err</tt> ripristina lo stato di errore dopo che si è verificato un errore. In {{OOo}} Basic, questa operazione viene espletata con i comandi <tt>On Error</tt> o <tt>Resume</tt>. }}
  
== 効率的なエラー処理のヒント ==
+
== Suggerimenti per la gestione strutturata degli errori ==
  
エラーハンドラを設定する <tt>On Error</tt> コマンドも、実行行を復帰させる <tt>Resume</tt> コマンドも、いわゆる <tt>Goto</tt> コマンドの一種です。
+
Sia il comando di definizione, <tt>On Error</tt> che il comando  <tt>Resume</tt> sono varianti del costrutto <tt>Goto</tt>.
  
この種の実行行をジャンプさせるコ\'83\'7dンドは、エラーの発生を\'97\'5c防する観点からも、コード内での多用を避けるべきです。
+
Per strutturare chiaramente il codice in modo da impedire la generazione di errori quando si utilizza questo costrutto, evitate l'uso di comandi di salto senza monitorarli.
  
また <tt>On Error Resume Next</tt> コマンドは、エラーの関連情報をリセットしてしまうので、その使用に当たっては注意が必要です。
+
Utilizzate il comando <tt>On Error Resume Next</tt> con cautela, perché chiude tutti i messaggi di errore aperti.
  
最善の方法は、プログラム内でエラー処理を行うブロックを一カ所にまとめておくことです。つまり、エラー処理ブロックをプログラム\'96\'7b体のコード部から分離しておき、エラー処理が終わっても実行行はエラー発生行にジャンプさせないようにします。
+
La soluzione migliore è adottare un unico approccio di gestione degli errori all'interno del programma: tenere la gestione degli errori separata dal codice effettivo del programma e non tornare al codice originale dopo che si è verificato l'errore.
  
以下のサンプルコードは、エラー処理の流れを示しています。
+
Il seguente è un esempio di un errore della procedura di gestione:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 113: Line 114:
 
</source>
 
</source>
  
この手続きでは、一番最初にエラーハンドラを設定してから、プログラム\'96\'7b体のコードを記述しています。そしてプログラム本体のコードの末尾で <tt>On Error Goto 0</tt> によりエラーハンドラ機能を解除し、<tt>Exit Sub</tt> コマンドにより手続きの実行を終了させるようにしています ( <tt>End Sub</tt> との違いに注意)
+
Questa procedura inizia con la definizione di un gestore di errori, seguito dal codice effettivo del programma. Alla fine del codice del programma, la gestione degli errori è disattivata dalla chiamata <tt>On Error Goto 0</tt> e l'implementazione della procedura è terminata dal comando <tt>Exit Sub</tt>(da non confondersi con <tt>End Sub</tt>).
  
このサンプルコードでは、あらかじめ想定されたエラーが発生したのかを、エラー番号をチェックすることで判定して (この例では判定用に <tt>ExpectedErrorNo</tt> という定数を使用) 、その結果に応じてエラー処理の内容を分岐させています。想定外のエラーが発生していた場合は、警告を\'95\'5c示します。このように、想定外のエラーの発生を検出するには、エラー番号を使ってチェックが行えます。
+
L'esempio controlla prima se il numero di errore corrisponde al numero previsto (memorizzato nella costante immaginaria <tt>ExpectedErrorNo</tt>) e quindi gestisce l'errore di conseguenza. Se si verifica un altro errore, il sistema emette un'avvertenza. È importante controllare il numero di errore in modo da poter rilevare gli errori imprevisti.
  
コード末尾に <tt>On Error Goto 0</tt> を記述してあるのは、エラー情報 (エラー管理用のシステム変数 <tt>Err</tt> に記録されたエラーコード) をリセットして、次回以降に発生するエラーを正確に記録させるためです。
+
La chiamata <tt>On Error Goto 0</tt> alla fine del codice ripristina le informazioni di stato dell'errore (il codice di errore nelle variabili di sistema <tt>Err</tt>) in modo che possiate riconoscere con chiarezza un errore verificatosi in data successiva.
  
 
{{PDL1}}
 
{{PDL1}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Error Handling}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Error Handling}}

Revision as of 18:22, 25 June 2009

Template:EN/Documentation/BASICGuideTOC/v2


La corretta gestione delle situazioni di errore è una delle attività di programmazione che richiede più tempo. Apache OpenOffice Basic fornisce un'ampia gamma di strumenti per semplificare la gestione degli errori.

L'istruzione On Error

L'istruzione On Error è fondamentale per la gestione degli errori:

Sub Test
  On Error Goto ErrorHandler
  ' ... undertake task during which an error may occur
  Exit Sub
  ErrorHandler: 
    ' ... individual code for error handling
End Sub

La riga On Error Goto ErrorHandler definisce il modo in cui Apache OpenOffice Basic procede in caso di errori. L'istruzione Goto ErrorHandler verifica che Apache OpenOffice Basic esca dalla riga di programma corrente, quindi esegue il codice ErrorHandler:.

Il comando Resume

Il comando Resume Next fa proseguire il programma dalla riga seguente al punto in cui si è verificato l'errore nel programma, dopo l'esecuzione del codice nel gestore di errori:

ErrorHandler:
  ' ... individual code for error handling
  Resume Next

Usate il comando Resume Proceed per specificare il punto in cui far proseguire il programma dopo la gestione dell'errore:

ErrorHandler:
  ' ... individual code for error handling
  Resume Proceed
 
Proceed:
  ' ... the program continues here after the error

Per far proseguire un programma senza un messaggio di errore quando si verifica un errore, utilizzate il formato seguente:

Sub Test
  On Error Resume Next
  ' ... perform task during which an error may occur
End Sub

Utilizzate il comando On Error Resume Next con cautela, perché ha un effetto globale.

Ricerche riguardanti informazioni sugli errori

Nella gestione degli errori, è utile disporre di una descrizione dell'errore e sapere dove e perché si è verificato:

  • La variabile Err contiene il numero di errori verificatisi.
  • La variabile Error$ contiene una descrizione dell'errore.
  • La variabile Erl contiene il numero della riga in cui si è verificato l'errore.

La chiamata

 MsgBox "Error " & Err & ": " & Error$ & " (line : " & Erl & ")"

mostra come l'informazione sull'errore può essere visualizzata in una finestra di messaggio.

Template:Documentation/Note

Le informazioni di stato rimangono valide finché il programma non incontra un comando Resume o On Error, quindi l'informazione viene ripristinata.

Template:Documentation/Note

Suggerimenti per la gestione strutturata degli errori

Sia il comando di definizione, On Error che il comando Resume sono varianti del costrutto Goto.

Per strutturare chiaramente il codice in modo da impedire la generazione di errori quando si utilizza questo costrutto, evitate l'uso di comandi di salto senza monitorarli.

Utilizzate il comando On Error Resume Next con cautela, perché chiude tutti i messaggi di errore aperti.

La soluzione migliore è adottare un unico approccio di gestione degli errori all'interno del programma: tenere la gestione degli errori separata dal codice effettivo del programma e non tornare al codice originale dopo che si è verificato l'errore.

Il seguente è un esempio di un errore della procedura di gestione:

Sub Example
  ' Define error handler at the start of the function 
  On Error Goto ErrorHandler   
    ' ... Here is the actual program code
  On Error Goto 0           ' Deactivate error handling
    ' End of regular program implementation
  Exit Sub
 
 ' Start point of error handling
 ErrorHandler:                
   ' Check whether error was expected
    If Err = ExpectedErrorNo Then   
      ' ... Process error
    Else
      ' ... Warning of unexpected error
    End If
 On Error Goto 0            ' Deactivate error handling 
End Sub

Questa procedura inizia con la definizione di un gestore di errori, seguito dal codice effettivo del programma. Alla fine del codice del programma, la gestione degli errori è disattivata dalla chiamata On Error Goto 0 e l'implementazione della procedura è terminata dal comando Exit Sub(da non confondersi con End Sub).

L'esempio controlla prima se il numero di errore corrisponde al numero previsto (memorizzato nella costante immaginaria ExpectedErrorNo) e quindi gestisce l'errore di conseguenza. Se si verifica un altro errore, il sistema emette un'avvertenza. È importante controllare il numero di errore in modo da poter rilevare gli errori imprevisti.

La chiamata On Error Goto 0 alla fine del codice ripristina le informazioni di stato dell'errore (il codice di errore nelle variabili di sistema Err) in modo che possiate riconoscere con chiarezza un errore verificatosi in data successiva.

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools