指非元件物件引發的異常,包含串流、列印、圖形、字串清單等異常。
定義於 Classes 單元,繼承結構:
EStreamError
|-- EFCreateError
|-- EFOpenError
|-- EFilerError
|-- EReadError
|-- EWriteError
|-- EClassNotFound
| 異常類別 | 觸發原因 |
|---|---|
| EStreamError | LoadFromStream 方法讀取串流發生錯誤 |
| EFCreateError | 建立檔案時發生錯誤 |
| EFOpenError | 開啟檔案時發生錯誤 |
| EFilerError | 嘗試再次註冊已存在物件 |
| EReadError | ReadBuffer 方法無法讀取指定位元組數 |
| EWriteError | WriteBuffer 方法無法寫入指定位元組數 |
| EClassNotFound | 視窗上元件從視窗型別定義中刪除 |
EPrinter:列印發生錯誤時引發。定義於 Printers 單元。例:嘗試向不存在印表機列印、列印工作無法送達印表機。
定義於 Graphics 單元,含兩類:
嘗試從不包含合法點陣圖、圖示、中繼檔或自訂圖形型別的檔案載入圖形時觸發。例:
Image1.Picture.LoadFromFile('Readme.txt'); { txt 非圖形檔 }
嘗試對圖形進行非法操作時觸發。例:嘗試改變圖示大小:
var AnIcon: TIcon;
begin
AnIcon := TIcon.Create;
AnIcon.LoadFromFile('C:\WINDOWS\DIRECTRY.ICO');
AnIcon.Width := 100; { 引發圖形異常,圖示大小不可變 }
...
end;
EStringListError、EListError:使用者對字串清單進行非法操作時引發。因眾多元件(TListBox、TMemo、TTabSet 等)擁有 TStrings 重要屬性,此類異常在元件操作程式設計中極實用。
例:初始化三項目的清單框,存取 Item[3](第四項,索引 0 基準)引發:
ListBox1.Items.Add('First item');
ListBox1.Items.Add('Second item');
ListBox1.Items.Add('Third item');
ListBox1.Items[3] := 'Not Exist'; { 引發 }
str := ListBox1.Items[3]; { 引發 }
兩種情境:
Duplicates=dupError 時嘗試加入重複字串;Sorted=True 時僅能透過 Add 維持排序)。