Delphi如何抛出异常??千万别说用Raise Delphi里有个抛出异常的函数我忘了叫啥了,要求如下:不用Raise,因为这个在调试状态下会出提示,也不用去改设置try 抛出异常的那个函数except ShowMessage('有异常');end; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当发生特定异常时做什么事, 有些异常是不必用户干预的 try DateTime := StrToDateTime(Edit1.Text); ... except on e: EConvertError do // 当发生转换失败时, 其它异常这里管不着 showmessasge( '目期格式无效 ') on e: 其它可以处理的异常 do ... end; 注意下 on e: Exception do 会响应所有的异常, 因为所有异常都是派生 Exceptioncopy来的,应该是你要的 只有Raise,否则就只能触发特定的异常了。不会是记着C++里面的throw了吧?如果不是Delphi的,那倒可以用如API RaiseException. 这样的方法我知道,我要的是主动抛出异常的函数,就象Raise似的如果大家看不懂我说的问题,这样好了,除了Raise还有哪些方法可以主动抛出异常的??? 完了,僵哥一发话基本上就把我的问题枪毙了,但是在我印象中Delphi里有个方法的 sorry,尚没见过。不过,设置ExceptionClass为nil可以防止IDE出现异常对话框。 通过设置是可以让IDE不提示的,方法:Tools->Debugger Options->Integrated debugging 打钩去掉帮我想想那个函数吧 Abort 是从 EAbort 过来的,可以激发 exception,其实质就是 Abort = RaiseException(),是一个不出现对话框的异常。所以 Abort 的行为和异常是一样的,其代码执行顺序也是follow异常的流程。 procedure Abort; function ReturnAddr: Pointer; asm MOV EAX,[EBP + 4] end;begin raise EAbort.CreateRes(@SOperationAborted) at ReturnAddr;end; 为了不引用 SysUtils 单元,减少程序体积,我是这样做的: try GetMem(FAddress, FileSize); // if (FAddress = nil) then Abort; // SysUtils if (FAddress = nil) then begin FileSize := 0; FileSize := 0 div FileSize; // Raise end; except //申请内存失败 end; 如何制作更新包 bde如何配置服务器数据库连接? 我的软件打包后在英文版的XP下运行不了,提示数据库找不到,不知为什么? Combobox组件的应用! 我想改System单元的代码,谁知道怎么编译System单元??因为Delphi有一个Bug!(P:100) 关于属性编辑器的问题 请帮忙找找这个控件:含DBCtrlsEh 数据集状态问题 Edit框失去或得到焦点时会执行哪一个过程? 这个问题谁能解决?? 谁帮我详细介绍一下varient类型和olevarient类型 怕吊扇会掉下来,怎么办??
try
DateTime := StrToDateTime(Edit1.Text);
...
except
on e: EConvertError do // 当发生转换失败时, 其它异常这里管不着
showmessasge( '目期格式无效 ') on e: 其它可以处理的异常 do
...
end;
注意下 on e: Exception do 会响应所有的异常, 因为所有异常都是派生 Exception
copy来的,应该是你要的
不会是记着C++里面的throw了吧?如果不是Delphi的,那倒可以用如API RaiseException.
这样的方法我知道,我要的是主动抛出异常的函数,就象Raise似的如果大家看不懂我说的问题,这样好了,除了Raise还有哪些方法可以主动抛出异常的???
完了,僵哥一发话基本上就把我的问题枪毙了,但是在我印象中Delphi里有个方法的
不过,设置ExceptionClass为nil可以防止IDE出现异常对话框。
通过设置是可以让IDE不提示的,方法:Tools->Debugger Options->Integrated debugging 打钩去掉帮我想想那个函数吧
asm
MOV EAX,[EBP + 4]
end;begin
raise EAbort.CreateRes(@SOperationAborted) at ReturnAddr;
end;
GetMem(FAddress, FileSize);
// if (FAddress = nil) then Abort; // SysUtils
if (FAddress = nil) then begin
FileSize := 0;
FileSize := 0 div FileSize; // Raise
end;
except
//申请内存失败
end;