我的任务是编写一个我正在研究的.NET/C#项目的异常处理策略和指南文档.我很难接受它.有很多关于如何/何时抛出,捕获,包装异常的信息,但我正在寻找描述catch块内部应该进行哪些事情,而不是包装和抛出异常.
try
{
DoSomethingNotNice();
}
catch (ExceptionICanHandle ex)
{
//Looking for examples of what people are doing in catch blocks
//other than throw or wrapping the exception, and throwing.
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
我一直在计划在Windows上开发一个rails项目.我听说框架没有在windows上测试过(至少不是测试框架)
有没有人对Windows上的rails有任何实际经验?在Windows上运行时是否有任何已知的错误?测试框架是否适用于Windows?
我有一个工业系统,可以将报警记录到远程托管的MySQL数据库.只要警报的属性发生变化(例如,警报被激活,确认或关闭的时间),工业系统就会在名为"警报"的表格中插入新行.
我不希望每个警报有多个记录,所以我设置了两个数据库触发器.第一个触发器将每个新记录镜像到第二个表,根据需要创建/更新行.第二个表('alarm_display')将'Tag'列设置为主键.'alarm'表没有主键.此触发器的代码是:
CREATE TRIGGER `mirror_alarms` BEFORE INSERT ON `alarms`
FOR EACH ROW
INSERT INTO `alarm_display` (Tag,...,OffTime)
VALUES (new.Tag,...,new.OffTime)
ON DUPLICATE KEY UPDATE OnDate=new.OnDate,...,OffTime=new.OffTime
Run Code Online (Sandbox Code Playgroud)
第二个触发器应在第一个触发器之后执行,并且(理想情况下)从警报表中删除所有行.(我使用了警报的Tag属性,因为Tag属性永远不会改变,虽然我怀疑我可以使用'DELETE FROM alarms WHERE 1'语句来达到相同的效果).
CREATE TRIGGER `remove_alarms` AFTER INSERT ON `alarms`
FOR EACH ROW DELETE FROM alarms WHERE Tag=new.Tag
Run Code Online (Sandbox Code Playgroud)
我的问题是第二个触发器似乎没有运行,或者如果它运行,第二个触发器不会从数据库中删除任何行.
所以这就是问题:为什么我的第二次触发不能达到我的预期呢?
我有这个正则表达式,我将OS名称与VMX文件中的一行进行比较.它最初是作为单独的elsif声明开始的,但最终我制作了一个单一的if声明.无论如何,这是代码; 我试图找到一种方法来使代码更清洁,但它将每个匹配放在一个单独的行上; 它不再有效.
elsif ($vmx_file =~ m/guestOSAltName\s+=\s"Microsoft\sWindows\sServer\s2003,Web\sEdition"|"Microsoft\sWindows\sSmall\sBusiness\sServer\s2003"|"Microsoft\sWindows\s2000\sAdvanced\sServer"|"Microsoft\sWindows\s2000\sServer"|"Microsoft\sWindows\s2000\sProfessional"|"Microsoft\sWindows\s98"|"Microsoft\sWindows\s95"|"Microsoft\sWindows\sNT\s4"/) {
$virtual_machines{$vm}{"Architecture"} = "32-bit";
Run Code Online (Sandbox Code Playgroud)
根据建议更新了代码,
elsif ($vmx_file =~ m/guestOSAltName\s+=\s"Microsoft\sWindows\sServer\s2003,Web\sEdition|Small\sBusiness\sServer\s2003|"2000\sAdvanced\sServer|2000\sServer|2000\sProfessional|98|95|NT\s4/) {
$virtual_machines{$vm}{"Architecture"} = "32-bit";
Run Code Online (Sandbox Code Playgroud) 我有一个"命名"的服务器,它似乎导致Grails无法找到localhost.
Running Grails application..
2011-01-12 20:45:14,046 [main] ERROR ehcache.Cache - Unable to set localhost. This prevents creation of a GUID. Cause was: zaftra: zaftra
java.net.UnknownHostException: zaftra: zaftra
at java.net.InetAddress.getLocalHost(InetAddress.java:1426)
at net.sf.ehcache.Cache.<clinit>(Cache.java:143)
at net.sf.ehcache.config.ConfigurationHelper.createCache(ConfigurationHelper.java:463)
at net.sf.ehcache.config.ConfigurationHelper.createDefaultCache(ConfigurationHelper.java:369)
at net.sf.ehcache.CacheManager.configure(CacheManager.java:445)
at net.sf.ehcache.CacheManager.init(CacheManager.java:302)
at net.sf.ehcache.CacheManager.<init>(CacheManager.java:260)
at net.sf.ehcache.hibernate.EhCacheProvider.start(EhCacheProvider.java:128)
Run Code Online (Sandbox Code Playgroud)
内容/etc/hosts(如图所示):
127.0.0.1 localhost localhost.localdomain zaftra
::1 localhost localhost.localdomain zaftra
Run Code Online (Sandbox Code Playgroud) 我有一个可选的POD结构,它将包含在一个union中.
boost::optional<>按价值保持其类型,所以我认为这可行:
union helper
{
int foo;
struct
{
char basic_info;
struct details {
//...
};
boost::optional<details> extended_info;
} bar;
// ...
};
helper x = make_bar();
if( x.bar.extended_info )
{
// use x.bar.extended_info->elements
}
Run Code Online (Sandbox Code Playgroud)
但VS2008抱怨我的barstruct现在有一个复制构造函数,因为该boost::optional<details>元素.
作为替代,我添加了一个布尔标志来指示可选参数是否有效,但是它很笨重:
union helper
{
int foo;
struct
{
char basic;
struct details {
bool valid;
//...
} extended;
} bar;
// ...
};
Run Code Online (Sandbox Code Playgroud)
我考虑过实现details::operator bool()返回details::valid变量,但这是模糊不清的,也是对人类的伤害.
boost::optional<>清楚地记录语法和意图,不需要侦探工作.
最后,helperunion需要是POD,所以我不能做任何动态分配 - 否则我会使用指针.
对于在语法上与 …
我正在尝试使用distcc在家中设置一个小型构建集群.有两个x64系统和一个i686系统.所有系统都运行Ubuntu 10.10并且是最新的.启动构建的系统是x64.Distcc在两个x64系统之间工作正常,但发送到i686系统的所有构建任务都失败了.
至今:
g++ -m64/usr/lib/distcc/g++以指向明确设置-m64参数的脚本.有什么建议?
我在winform中有几个文本框,其中一些在groupbox中.我试图遍历我的表单中的所有文本框:
For Each c As Control In Me.Controls
If c.GetType Is GetType(TextBox) Then
' Do something
End If
Next
Run Code Online (Sandbox Code Playgroud)
但它似乎跳过了groupbox中的那些并且仅循环到表单的其他文本框.所以我为groupbox文本框添加了另一个For Each循环:
For Each c As Control In GroupBox1.Controls
If c.GetType Is GetType(TextBox) Then
' Do something
End If
Next
Run Code Online (Sandbox Code Playgroud)
我想知道:有没有办法循环遍历表单中的所有文本框 - 包括组框内的文本框 - 只有一个For Each循环?或者更好/更优雅的方式来做到这一点?
提前致谢.
关于在C++中解析XML等问题已经提出了很多问题......但是,我的问题非常具体,而不是一般问题.
我要求一个非常有效的C++ XML解析器.特别是我有一个非常非常大的XML文件来解析.我的应用程序必须打开此文件并检索数据.它还必须插入新节点并再次将最终结果保存在文件中.
为了做到这一点,我在开始时使用了rapidxml,但它要求我打开文件,解析所有内容(所有内容因为这个lib没有直接访问文件的功能而不先加载整个树),然后编辑树,修改它并通过覆盖它将最终树存储在文件上...它消耗了太多的资源.
是否有一个XML解析器,不需要我加载整个文件,但我可以用来快速插入新节点和检索数据?你能指出我这个问题的解决方案吗?
有没有办法使用DataMapper获取模型的属性?例如:
require 'rubygems'
require 'datamapper'
class User
include DataMapper::Resource
property :id, Serial
property :name, String
end
Run Code Online (Sandbox Code Playgroud)
我可以获取User数组或哈希的属性吗?