问题列表 - 第42858页

抛出正确类型的例外

在我的代码中,我经常遇到这样的情况:

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).这似乎总是一个选项,但我担心当我开始遵循这种模式时,我必须为许多不同的错误条件定义许多特殊的异常类.

还有其他更好的选择吗?支持或反对这些选择的论据是什么?

感谢您提前的反馈!

.net c# exception

10
推荐指数
2
解决办法
4612
查看次数

如何使用Doctrine翻译此查询?

我尝试生成自定义查询(我正在为网站开发搜索引擎).

这是要翻译的查询:

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)

请问你能帮帮我吗 ?

sql doctrine symfony1 dql symfony-1.4

0
推荐指数
1
解决办法
190
查看次数

C++:将容器转换为不同但兼容类型的容器

它经常发生在我身上有AA容器C的类型(或任何类型的包装类,甚至是智能指针)T1,并希望这种转换C<T1>C<T2>,其中T2是兼容的T1.

C++不允许我直接转换整个容器,并且强制a reinterpet_cast会导致未定义的行为,所以我需要创建一个新的C<T2>容器并使用生成的C<T1>项目重新填充它T2.这种操作在时间和空间上都非常昂贵.

而且许多情况下,我敢肯定,强制reinterpret_cast将正常工作与任何编译器编译的代码曾经存在,例如,当T2T1 const时,或者T1T2是指针.

是否有转换任何清洁和高效的方式C<T1>C<T2>
例如,一个container_cast运算符(/ function?)创建并重新填充C<T2>if和only,如果它不是二进制兼容的C<T1>

c++ containers casting

7
推荐指数
1
解决办法
3550
查看次数

使用Linq to SQL进行多线程处理

由于最初的线程(使用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数据连接.

任何见解和解释将不胜感激.

sql linq parallel-processing linq-to-sql

6
推荐指数
2
解决办法
5320
查看次数

需要帮助使用asadmin配置GlassFish

由于项目限制,我需要在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配置它.任何帮助我的帮助将不胜感激.

感谢阅读,祝你有个美好的一天.

ssl glassfish asadmin

1
推荐指数
1
解决办法
3595
查看次数

如何在c ++中传递std-functor并在不知道具体是哪一个的情况下使用它

我在这里有类似排序算法的东西,我想传递一个函子,它提供了排序标准(std :: binary_function).因此,如果给出了std :: less,它应该调用T.operator <().

问题是,成员函数operator()不是虚拟的.所以我需要知道给出了哪种类型的对象,以执行一个不太好的动态转换.

问候,

丹尼斯

c++ virtual stl std functor

1
推荐指数
1
解决办法
868
查看次数

GDI 渲染到 direct2D ID2D1BitmapRenderTarget 总是透明的

我想将我的电影渲染软件从 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)

transparency gdi direct2d rendertarget

5
推荐指数
1
解决办法
3001
查看次数

对DB2的良好IDE的建议

我知道,我知道......这是一个可怕的命运,但我被迫在后端使用DB2的环境中工作.好吧开玩笑但事实是我很喜欢MSSQL的数据工作室,而且IBM的工具在我看来是sorda crummy ...我使用的是Toad的免费版本,但我刚买了一台新的64位机器很好,所有但是我找不到win7 64的免费版Toad.

有没有人建议好的IDE与DB2一起使用?作为一名开发人员,我真的只是做了很多关于数据库结构的工作,并查询我得到了什么,以及我想要回来的东西......

谢谢你的建议!

db2

8
推荐指数
1
解决办法
1万
查看次数

如何使用mercurial和svn在一起

工作中的SVN回购只能在内部到达(至少对我来说是承包商).不工作时,我想使用HG,然后第二天与SVN同步.

使用两者都是可取的吗?有人应该注意的问题吗?

svn version-control mercurial

11
推荐指数
1
解决办法
1838
查看次数

什么是java中的多态方法?

我正在研究用于SCJP测试的java语言.

理解"多态方法"有点难.

你能帮我解释一下吗?或者给我一些链接?

java polymorphism terminology

6
推荐指数
2
解决办法
2万
查看次数