12.3.6 利用異常響應(yīng)編程
利用異常處理機(jī)制不僅能使程序更加健壯,而且也提供了一種使程序更加簡(jiǎn)捷、明了的途徑。事實(shí)上,使用自定義異常類就是一種利用異常響應(yīng)編程的方式。這里我們?cè)儆懻搸讉(gè)利用標(biāo)準(zhǔn)異常類編程的例子。
比如為了防止零作除數(shù),可以在進(jìn)行除法運(yùn)算前使用if…then…else語句。但如果有一系列這樣的語句則繁瑣程度是令人難以忍受的。這時(shí)候我們可能傾向于使用EDivByZero異常。例如如下一段程序就遠(yuǎn)比用if…then…else實(shí)現(xiàn)簡(jiǎn)捷明了。
function Calcu(x,y,z,a,b,c:Integer):Real;
begin
try
Result := x/a+y/b+z/c ;
except
on EDivByZero do
Result := 0;
end;
end;
在(6.2.3)記錄文件的打開與創(chuàng)建中就是利用異常響應(yīng)來實(shí)現(xiàn)文件的打開或創(chuàng)建。
procedure TRecFileForm.OpenButtonClick(Sender: TObject);
begin
if OpenDialog1.Execute then
FileName := OpenDialog1.FileName
else
exit;
AssignFile(MethodFile,Filename);
try
Reset(MethodFile);
FileOpened := True;
except
on EInOutError do
begin
try
if FileExists(FileName) = False then
begin
ReWrite(MethodFile);
FileOpened := True;
end
else
begin
FileOpened := False;
MessageDlg('文件不能打開',mtWarning,[mbOK],0);
end;
except
on EInOutError do
begin
FileOpened := False;
MessageDlg('文件不能創(chuàng)建',mtWarning,[mbOK],0);
end;
end;
end;
end;
if FileOpened = False then exit;
Count := FileSize(MethodFile);
if Count > 0 then
ChangeGrid;
RecFileForm.Caption := FormCaption+' -- '+FileName;
NewButton.Enabled := False;
OpenButton.Enabled := False;
CloseButton.Enabled := True;
end;
總之,利用異常響應(yīng)編程的中心思想是雖然存在預(yù)防異常發(fā)生的確定方法,但卻對(duì)異常的產(chǎn)生并不進(jìn)行事前預(yù)防,而是進(jìn)行事后處理,并以此來簡(jiǎn)化程序的邏輯結(jié)構(gòu)。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |