容錯處理

容錯處理

容錯處理是指軟體運行時,能對由非正常因素引起的運行錯誤給出適當的處理或信息提示,使軟體運行正常結束。此外.在對磁碟、印表機等計算機外設操作時.若外設沒有準備好,系統會自動給出錯誤信息。儘管如此.設計的軟體還是要具有在調用這些設備之前予以檢測、處理的功能。

簡介

一般來說,程式對輸入的內容都有一定的要求。比如數學計算的程式就不能輸入字母來計算。這個時候,一個完善的程式應該考慮到使用者各種可能的輸入情況並進行容錯處理。如果出現了錯誤,程式不會崩潰導致退出或者異常,程式裡面的容錯處理部分可以對意外情況進行處理 比如彈出提示框等等。

定義

軟體的容錯處理是指軟體運行時,能對由非正常因素引起的運行錯誤給出適當的處理或信息提示,使軟體運行正常結束。這些非因素一般包括數據類型不匹配、數據超出軟體預定義範圍、數據超出系統預定義範圍、檔案不存在以及由硬體限制所引起的非邏輯性死循環 。

方法

設定循環陷井,限制數據邊界值

對於由外設輸入的數據,在進行數據運算處理之前,可以先插入以下程式段,檢測其是否超出軟體設計者設定的取值範圍。若超出其邊界值,則會陷進預先設定的循環體內,並給出數據超界的信息提示,直到輸入數據正確為止。

Begin(*main*)

Write(’Please Enler Value of Varialion:’);

Read(X);

while(x<0)()R(x>100)DO(*陷井入口*)

Begin

Writeln(’No definition,Pease Enter again:’);

Read(x);

End;

預埋計數器,終止非邏輯性“死循環”

“死循環”是指某一程式段被反覆地執行,不能自行終結。它是程式設計中一類常見的錯誤,一般由語法錯誤引起的,或者是由於程式邏輯結構有問題所致,這些問題都能通過程式設計者反覆的闊試修改,在軟體設計階段被排除。但是也應注意.由於硬體的限制和計算機存貯數據的特點,有些程式雖然無任何可查的語法錯誤和邏輯結構錯誤,在軟體運行時也同樣可能出現非邏輯性“死循環”。對於這種現象,我們可在循環體內設定計數器和狀態參量,跟蹤程式的循環過程。這樣一來,導致“死循環”的因素只要一出現,它們就會及時給用戶以信息提示並有效地終止“死循環”。

n=maxInt-1;k=0;flag=true;

While P and flag Do(*P為原循環條件*)

Begin (*循環入口*)

.......

n=n+1;If n=maxint;Then k=k+1;

容錯處理 容錯處理

1f k2 ;Then flag=false;

End; (*循環出口*)

If not(flag) then writeln I;

.......

調用過程Procechan,增強變數類型的吝錯性

PASCAl語言是一種結構化語言,它格式嚴謹。數據類型是強類型數據,即所有數據類型均能在編譯時被確定。它要求每一個變數在程式中必須有唯一的類型。特別是當變數被定義成數值型數據類型時,其兼容性特別低.若實型、整型數據的原始輸A採用字元型,在程式中再做顯示轉換,則可較大幅度地提高軟體對類型不匹配的容錯能力。調用過程Procechan以達到類型的顯示轉換目的。

Procedore Proceehan(Var r:real);

LabeI 1;

Var k,m,n,P:inteer;a,x:real;

Yes:boolean;Ch:char;

begin

1:yes=true;k=0;a=0;m=0;n=0;P=1;

while not(coln) and yes do

begin

Read(ch);X=ord(ch);

If(x<46)OR(x>57)OR(x=4 7) R(k>1) then yes=true;

else begiin 1f x=46 then k=k-1;

else begin

x=x-48;

If k=0 then begin m=m+1;a=a*10+X end

else begin n=n+1;p=P*10;a=a十x/p end

End(*if*)

End(x*while*)

If not(yes)R(k=2)then

begin

writeln("Data error,Please enteror again");

ReadIn:Goto l End

else t=a

End(*proce*)

檔案操作的容錯處理

在進行檔案型數據類型操作時,若檔案為空或者不存在.程式會因不能進入檔案操作循環體而不對操作過程作任何反應。為此,在對檔案進行操作之前.要首先對文什狀態進行檢測、處理。從而給計算機用戶提供一個良好的使用界面。

......

assign(f,‘·dat’);Reset(f);

If eof(f) then begin

writeln(*file is empty* ”no exislence")

writeln("please search again");End

else Begin…End(*檔案操作過程*)

......

此外.在對磁碟、印表機等計算機外設操作時.若外設沒有準備好,系統會自動給出錯誤信息。儘管如此.設計的軟體還是要具有在調用這些設備之前予以檢測、處理的功能。

相關詞條

熱門詞條

聯絡我們