程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第十二章-異常處理與程序調試(一)(2)

第十二章-異常處理與程序調試(一)(2)

編輯:Delphi

12.1.1.3  整數異常 

整數異常都是從一個EIntError類派生的,但程序運行中引發的總是它的子類:EDivByZero,ERangeError,EIntOverFlow。 

表12.2  整數異常及其產生原因

━━━━━━━━━━━━━━━━━━━━━

異常類 引發原因

─────────────────────

EDivByZero 試圖被零除

ERangeError 整數表達式越界

EIntOverFlow 整數操作溢出

━━━━━━━━━━━━━━━━━━━━━━ 

ERangeError當一個整數表達式的值超過為一個特定整數類型分配的范圍時引發。比如下面一段代碼將引發一個ERangeError異常。 

var

SmallNumber: ShortInt;

X , Y: Integer;

begin

X := 100;

Y := 75;

SmallNumber := X * Y;

end;

特定整數類型包括ShortInt、Byte以及與整數兼容的枚舉類型、布爾類型等。例如:  

type

THazard = ( Safety , Marginal , Critical , Catastrophic );

var

Haz: THazard;

Item: Integer;

begin

Item:= 4;

Haz:= THazard ( Item );

end; 

由於枚舉數越界而引發一個ERangeError異常。

數組元素越界也會引發一個ERangeError異常,如: 

var

Values: array[1..10] of Integer;

i: Integer;

begin

for i := 1 to 11 do

Values[i] := i;

end;

ERangeError異常只有當類型檢查打開時才會引發。這可以在代碼中包含{$R+} 編譯指示或設置IDE Option|Project的Range_Checking Option選擇框。

EIntOverFlow異常類在Integer、Word、Longint三種整數類型越界時引發。如:

var

I : Integer;

a,b,c : Word;

begin

a := 10;

b := 20;

c := 1;

for I := 0 to 100 do

begin

c := a*b*c;

end;

end;

引發一個EIntOverFlow異常。

EIntOverFlow異常類只有在編譯選擇框Option|Project|Over_Flow_Check Option選中時才產生。當關閉溢出檢查,則溢出後變量保留該類整數的最大范圍值。

整數類型的范圍如下表。 

表12.3 整數類型的范圍

━━━━━━━━━━━━━━━━━━━━━━━━━━━

類型 范圍 格式

───────────────────────────

Shortint -128 .. 127 有符號8位

Integer -32768 .. 32767 有符號16位

Longint -2147483648 .. 2147483647 有符號32位

Byte 0 .. 255 無符號8位

Word 0 .. 65535 無符號16位

━━━━━━━━━━━━━━━━━━━━━━━━━━━  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved