2017-03-03 70 views
0

DateUtils.TryISO8601ToDate('8', Result)生成異常。但它是嘗試 !!!它的任務是嘗試沒有拋出任何例外。TryISO8601ToDate生成異常

問題不在於Delphi IDE對此異常做出反應。問題是「Try」函數產生這樣的異常而不是返回true/false。

+7

有點兒跛,他們執行'TryISO8601ToDate'上ISO8601ToDate'的'頂部,而不是周圍的其他方法.....馬虎,並指示在圖書館開發商缺乏凝聚力和經驗。老頭在做代碼審查,哪裏會立即看到這樣的錯誤? –

回答

3

我想你可能需要調整你的IDE調試器選項。

在IDE中,轉至工具|選項和調試器選項下的語言例外選項卡上英巴卡迪諾調試器,取消選中Notify on Language Exceptions框。

選中該複選框後,調試器將在您的(或RTL)異常處理執行之前停止在IDE中的執行。它彈出一個詢問你是否想要中斷執行或繼續。如果選擇後者,代碼中的異常處理程序將執行。

更新 Tbh,隨着你q的更新,我根本不清楚你說的是什麼問題。以下哪部分代碼的行爲不符合您的期望/如何?

procedure TForm1.TestISODates; 
var 
    S : String; 
    DT : TDateTime; 
begin 
    DT := Now; 
    S := DateToISO8601(DT, False); 
    Caption := S; 

    if TryISO8601ToDate(S, DT, False) then 
    Caption := 'OK'; 

    S := 'banana'; 
    if TryISO8601ToDate(S, DT, False) then 
    Caption := 'OK' 
    else 
    Caption := S + ' not ok'; 
end; 
+0

是的,這些通知確實令人驚訝。 –

+0

@TomBrunberg:的確如此。就我個人而言,我發現它是所有Delphi默認設置中最惱人的,唯一例外的是在所有類型的數據庫連接組件中使用LogInPrompt = True。 – MartynA

+0

當彈出異常對話框時,您也可以點擊'忽略此異常'類型框,它不會再彈出。 – Dsm