Ik heb een procedure geschreven dat volledig in een try...except blok is geschreven, dus juist na de begin, en juist voor de end;
In die procedure wordt een POP3-client gecreëerd (TIdPOP3, waarschijnlijk wel bekend bij sommigen onder jullie
), de data ingevuld, geconnect, en gekeken of de connection successful was, om zo te weten of de data correct is of niet.
Hier is (deels) de code:
Het probleem: als de data niet correct is, geeft hij toch een (raadselachtige) error/exception (hij doet dit niet als de data wel correct is, dus als hij volledig kan connecten en auth'en). In de comments zie je dat ik een tweede try...except blok heb geprobeert, en als ik die daar zet (dus als ik de slashes weghaal), word de error niet gerezen. Hoe komt dit?
Ik heb al gedacht aan het feit dat de exception niet van het type "Exception" is, maar ik dacht toch dat "Exception" gebruikt kan worden om alle exceptions op te vangen? Ik heb wat gegoogled hierover en niets gevonden
.
Kan iemand mij help met dit? Thanks
In die procedure wordt een POP3-client gecreëerd (TIdPOP3, waarschijnlijk wel bekend bij sommigen onder jullie
Hier is (deels) de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| //Test the account in "Account", mainly for testing purposes before saving
function TMailChecker.TestAccount(Account: TAccount): TError;
begin
try
case Account.AccountType of
atPOP3: begin
if POP3Client = nil then
POP3Client := TIdPOP3.Create(nil);
with POP3Client do
begin
// try
Host := Account.AccountServer;
Port := Account.AccountPort;
Username := Account.AccountUsername;
Password := Account.AccountPassword;
Connect(Account.AccountTimeout);
if not Connected then
begin
result := Errors.NewError('Unable to connect. Please check if you entered the right username, password, host and port and try again.', Error_NoConnection);
POP3Client.Free;
end
else
begin
result := Error_None;
POP3Client.Free;
end;
// except
// end;
end;
end;
atIMAP4: begin
// Weggelaten
end;
end;
except
on RaisedException: Exception do
result := Errors.NewError(RaisedException.Message, Error_Unknown);
end;
end; |
Het probleem: als de data niet correct is, geeft hij toch een (raadselachtige) error/exception (hij doet dit niet als de data wel correct is, dus als hij volledig kan connecten en auth'en). In de comments zie je dat ik een tweede try...except blok heb geprobeert, en als ik die daar zet (dus als ik de slashes weghaal), word de error niet gerezen. Hoe komt dit?
Ik heb al gedacht aan het feit dat de exception niet van het type "Exception" is, maar ik dacht toch dat "Exception" gebruikt kan worden om alle exceptions op te vangen? Ik heb wat gegoogled hierover en niets gevonden
Kan iemand mij help met dit? Thanks
If you come here... you'll find me... I promise