在我的代码中,我经常遇到这样的情况:
public void MyMethod(string data)
{
AnotherClass objectOfAnotherClass = GetObject(data);
if (objectOfAnotherClass == null)
throw new WhatExceptionType1("objectOfAnotherClass is null.");
if (objectOfAnotherClass.SomeProperty < 0)
throw new WhatExceptionType2("SomeProperty must not be negative.");
}
Run Code Online (Sandbox Code Playgroud)
想象一下,GetObject使用一些不受我控制的外部库,null如果没有对象data存在则返回该库,并将负数SomeProperty视为有效状态,因此不会抛出异常.进一步设想,MyMethod如果不工作objectOfAnotherClass,并没有什么意义了负SomeProperty.
WhatExceptionType1/2投入这种情况的正常例外是什么?
基本上我有四个选择:
1)InvalidOperationException,因为MyMethod在上述条件下没有意义.另一方面,指南(以及VS中的Intellisense)表示如果方法所属的对象处于无效状态,则应抛出InvalidOperationException.现在对象本身不处于无效状态.相反,输入参数data和基于该参数的一些其他操作导致MyMethod不能再操作的情况.
2)ArgumentException,因为有方法的值data可以使用和方法不能的其他值.但我无法通过data单独检查来检查这一点,在决定之前我必须调用其他操作.
3)Exception,因为我不知道使用哪个其他异常类型,并且因为所有其他预定义异常都觉得太专业并且不适合我的情况.
4)MyCustomException(我自己的异常类型派生自Exception).这似乎总是一个选项,但我担心当我开始遵循这种模式时,我必须为许多不同的错误条件定义许多特殊的异常类.
还有其他更好的选择吗?支持或反对这些选择的论据是什么?
感谢您提前的反馈!
我尝试生成自定义查询(我正在为网站开发搜索引擎).
这是要翻译的查询:
SELECT * FROM `offre_habitation`
WHERE `id_type_offre` = 2
AND `id_nature_offre` = 1
AND (`nb_pieces` = 2 or `nb_pieces` = 1 or `nb_pieces` = 3 or `nb_pieces` = 4)
AND (`id_secteur`=1 OR `id_secteur` = 2 or id_secteur = 3)
AND `surface_habitable` > 90
AND `prix` > 700
Run Code Online (Sandbox Code Playgroud)
请问你能帮帮我吗 ?
它经常发生在我身上有AA容器C的类型(或任何类型的包装类,甚至是智能指针)T1,并希望这种转换C<T1>成C<T2>,其中T2是兼容的T1.
C++不允许我直接转换整个容器,并且强制a reinterpet_cast会导致未定义的行为,所以我需要创建一个新的C<T2>容器并使用生成的C<T1>项目重新填充它T2.这种操作在时间和空间上都非常昂贵.
而且许多情况下,我敢肯定,强制reinterpret_cast将正常工作与任何编译器编译的代码曾经存在,例如,当T2是T1 const时,或者T1和T2是指针.
是否有转换任何清洁和高效的方式C<T1>在C<T2>?
例如,一个container_cast运算符(/ function?)创建并重新填充C<T2>if和only,如果它不是二进制兼容的C<T1>?
由于最初的线程(使用Linq to SQL的多线程)已经变得很老了,我以为我会在类似的主题上发布另一个问题.考虑一种场景,其中DomainService公开了许多方法来从SQL Server数据库中检索数据.显然,在多用户场景中,同时有多个请求进入,人们不得不期望this.DataContext并行使用,开发人员无需控制或额外的工作来处理这些多个请求.那么,如果我将顺序的LINQ查询放入Parallel.Invoke()中,那么所有的地狱都会破裂,我得到的是"已经有一个与此命令关联的开放DataReader,必须首先关闭它".错误......?
为了演示,这有效:
List<Data> retVal = new List<Data>();
retVal.AddRange(this.DataContext.Table1.Where(w=>w.A==1).Select(s=>new Data{f1=s.D}).ToList());
retVal.AddRange(this.DataContext.Table1.Where(w=>w.B==2).Select(s=>new Data{f1=s.D}).ToList());
retVal.AddRange(this.DataContext.Table1.Where(w=>w.C==3).Select(s=>new Data{f1=s.D}).ToList());
Run Code Online (Sandbox Code Playgroud)
......但这不是:
List<Data> retVal = new List<Data>();
Parallel.Invoke(
()=>retVal.AddRange(this.DataContext.Table1.Where(w=>w.A==1).Select(s=>new Data{f1=s.D}).ToList()),
()=>retVal.AddRange(this.DataContext.Table1.Where(w=>w.B==2).Select(s=>new Data{f1=s.D}).ToList()),
()=>retVal.AddRange(this.DataContext.Table1.Where(w=>w.C==3).Select(s=>new Data{f1=s.D})).ToList());
Run Code Online (Sandbox Code Playgroud)
不要介意List不是线程安全的,因为错误来自SQL数据连接.
任何见解和解释将不胜感激.
由于项目限制,我需要在shell脚本(linux)中使用asadmin配置我的GlassFish安装.我配置了所有参数,除了一个.我需要配置的部分是"网络监听器"部分.以下是默认domain.xml文件的部分:
<network-config>
<protocols>
<protocol name="http-listener-1">
<http default-virtual-server="server" max-connections="250" server-name="">
<file-cache enabled="false"></file-cache>
</http>
</protocol>
<protocol security-enabled="true" name="http-listener-2">
<http default-virtual-server="server" max-connections="250" server-name="">
<file-cache enabled="false"></file-cache>
</http>
<ssl ssl3-enabled="false" cert-nickname="s1as"></ssl>
</protocol>
<protocol name="admin-listener">
<http default-virtual-server="__asadmin" max-connections="250" server-name="">
<file-cache enabled="false"></file-cache>
</http>
</protocol>
</protocols>
</network-config>
Run Code Online (Sandbox Code Playgroud)
对于"http-listener-2"部分,我需要更改"ssl"部分.我看了很多地方但找不到正确的asadmin命令来进行这些更改.我的ssl部分需要看起来像这样:
<ssl key-store="config/xxxxxServer.jks" trust-store="config/xxxxxTrustStore.jks" cert-nickname="xxxxxServer" />
Run Code Online (Sandbox Code Playgroud)
正如我所说,我已经查了几天了,我找不到与asadmin一起使用的正确命令行命令来设置这些参数.我认为"asadmin create-ssl"将是我所需要的,但不幸的是,它不是.在查看GlassFish的Web界面时,我看到了我需要设置的参数.这告诉我,我应该能够通过asadmin配置它.任何帮助我的帮助将不胜感激.
感谢阅读,祝你有个美好的一天.
我在这里有类似排序算法的东西,我想传递一个函子,它提供了排序标准(std :: binary_function).因此,如果给出了std :: less,它应该调用T.operator <().
问题是,成员函数operator()不是虚拟的.所以我需要知道给出了哪种类型的对象,以执行一个不太好的动态转换.
问候,
丹尼斯
我想将我的电影渲染软件从 DirectDraw 移植到 Direct2D。由于兼容性问题,GDI 渲染需要在图像之上完成。为了优化性能,我想实现某种后台缓冲机制,但是 alpha 通道信息似乎存在问题,所有 GDI 绘图似乎都以某种方式透明。
我为我的窗口句柄创建了一个ID2D1HwndRenderTarget,并创建了一个ID2D1Bitmap来复制图像。位图的像素格式为DXGI_FORMAT_B8G8R8A8_UNORM,alpha 模式为D2D1_ALPHA_MODE_IGNORE。HwdRenderTarget 是 GDI 兼容的,所以我的渲染函数看起来像这样:
HwdRenderTarget.BeginDraw;
HwdRenderTarget.DrawBitMap(myBitMap);
HwdRenderTarget.GetDC(dc);
... do GDI drawing here ...
HwdRenderTarget.ReleaseDC();
HwdRenderTarget.EndDraw;
Run Code Online (Sandbox Code Playgroud)
这个版本工作得很好:GDI 对象使用纯色绘制,DrawTextEx-Text 具有透明背景。
为了优化性能,我想在“后台缓冲区”中进行 GDI 绘图,因此只需要在发生变化时才需要完成。否则我只能渲染缓存的位图。位图是空的和透明的,所以只有绘制的对象应该是可见的。
所以我创建了一个 CompatibleRenderTarget ID2D1BitmapRenderTarget,alpha 模式是D2D1_ALPHA_MODE_PREMULTIPLIED:
HwdRenderTarget.CreateCompatibleRenderTarget(nil, nil, nil, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE, CompatibleRenderTarget);
Run Code Online (Sandbox Code Playgroud)
现在我在 CompatibleRenderTarget 中进行 GDI 渲染:
CompatibleRenderTarget.BeginDraw;
if Supports(CompatibleRenderTarget, ID2D1GdiInteropRenderTarget, GdiInteropRenderTarget) then
begin
GdiInteropRenderTarget.GetDC(D2D1_DC_INITIALIZE_MODE_CLEAR, dc);
... do GDI drawing here ...
GdiInteropRenderTarget.ReleaseDC(fDstSize);
end;
GdiInteropRenderTarget := nil;
CompatibleRenderTarget.EndDraw;
CompatibleRenderTarget.GetBitmap(BackBuffer); …Run Code Online (Sandbox Code Playgroud) 我知道,我知道......这是一个可怕的命运,但我被迫在后端使用DB2的环境中工作.好吧开玩笑但事实是我很喜欢MSSQL的数据工作室,而且IBM的工具在我看来是sorda crummy ...我使用的是Toad的免费版本,但我刚买了一台新的64位机器很好,所有但是我找不到win7 64的免费版Toad.
有没有人建议好的IDE与DB2一起使用?作为一名开发人员,我真的只是做了很多关于数据库结构的工作,并查询我得到了什么,以及我想要回来的东西......
谢谢你的建议!
工作中的SVN回购只能在内部到达(至少对我来说是承包商).不工作时,我想使用HG,然后第二天与SVN同步.
使用两者都是可取的吗?有人应该注意的问题吗?
我正在研究用于SCJP测试的java语言.
理解"多态方法"有点难.
你能帮我解释一下吗?或者给我一些链接?
c++ ×2
sql ×2
.net ×1
asadmin ×1
c# ×1
casting ×1
containers ×1
db2 ×1
direct2d ×1
doctrine ×1
dql ×1
exception ×1
functor ×1
gdi ×1
glassfish ×1
java ×1
linq ×1
linq-to-sql ×1
mercurial ×1
polymorphism ×1
rendertarget ×1
ssl ×1
std ×1
stl ×1
svn ×1
symfony-1.4 ×1
symfony1 ×1
terminology ×1
transparency ×1
virtual ×1