EIntOverFlow異常類在Integer
var
I : Integer;
a
begin
a :=
b :=
c :=
for I :=
begin
c := a*b*c;
end;
end;
引發一個EIntOverFlow異常
EIntOverFlow異常類只有在編譯選擇框Option|Project|Over_Flow_Check Option選中時才產生
整數類型的范圍如下表
表
━━━━━━━━━━━━━━━━━━━━━━━━━━━
類型 范圍 格式
───────────────────────────
Shortint
Integer
Longint
Byte
Word
━━━━━━━━━━━━━━━━━━━━━━━━━━━
浮點異常是在進行實數操作時產生的
表
━━━━━━━━━━━━━━━━━━━━━━━━
異常類 引發原因
────────────────────────
EInvalidOp 處理器碰到一個未定義的指令
EZeroDivide 試圖被零除
EOverFlow 浮點上溢
EUnderFlow 浮點下溢
━━━━━━━━━━━━━━━━━━━━━━━━
EInvalidOp最常見的引發原因是沒有協處理器的機器遇到一個協處理器指令
各種類型的浮點數(Real
類型匹配異常EInvalidCast當試圖用As 操作符把一個對象與另一類對象匹配失敗後引發
類型轉換異常EConvertError當試圖用轉換函數把數據從一種形式轉換為另一種形式時引發
var
rl : Real;
int: Integer;
begin
rl := StrToFloat(
int := StrToInt(
end;
要注意並不是所有的類型轉換函數都會引發EConvertError異常
硬件異常發生的情況有兩種
硬件異常都是EProcessor異常類的子類
表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
異常類 引發原因
─────────────────────────────────
Efault 基本異常類
EGPFault 一般保護錯
EStackFault 非法訪問處理器的棧段
EPageFault Windows內存管理器不能正確使用交換文件
EInvalidOpCode 處理器碰到一個未定義的指令
試圖去操作非法數據或未初始化的內存
EBreakPoint 應用程序產生一個斷點中斷
ESingleStep 應用程序產生一個單步中斷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
EFault
[
From:http://tw.wingwit.com/Article/program/Delphi/201311/25192.html