问题列表 - 第8641页

当您不使用异常来控制流时,代码如何显示?

我已经在其他回答的问题中看到了关于何时抛出异常的建议,但现在我的API有了新的噪音.我没有调用try/catch块中包含的方法(烦恼的异常),而是使用可能在处理过程中发生的错误集合的参数参数.我理解为什么在try/catch中包装所有内容是控制应用程序流程的一种不好的方法,但我很少看到反映这种想法的代码.

这就是为什么整件事对我来说似乎很奇怪.这种做法应该是正确的编码方式,但我没有在任何地方看到它.除此之外,我还不太清楚当"坏"行为发生时如何与客户端代码相关联.

以下是我正在讨论的一些代码片段,用于保存由网络应用用户上传的图片.不要让细节出汗(这很难看),只要看看我将这些输出参数添加到所有内容以获取错误消息的方式.

public void Save(UserAccount account, UserSubmittedFile file, out IList<ErrorMessage> errors)
{
    PictureData pictureData = _loader.GetPictureData(file, out errors);

    if(errors.Any())
    {
        return;
    }

    pictureData.For(account);

    _repo.Save(pictureData);
}
Run Code Online (Sandbox Code Playgroud)

这是正确的想法吗?我可以合理地期望用户提交的文件在某种程度上是无效的,所以我不应该抛出异常,但是我想知道文件有什么问题,所以我产生错误消息.同样,任何现在使用此保存方法的客户端也希望找出整个图片保存操作的错误.

关于返回包含结果和其他错误消息的状态对象,我有其他想法,但这感觉很奇怪.我知道在任何地方都有参数很难维护/重构/等.

我会喜欢这方面的指导!

编辑:我认为用户提交的文件片段可能会让人们想到加载无效图像和其他"硬"错误所产生的异常.我认为这段代码片段更好地说明了我认为抛出异常的想法在哪些方面是不受欢迎的.

有了这个,我只是保存一个新的用户帐户.我在用户帐户上进行状态验证,然后点击持久存储以查明是否已使用用户名.

public UserAccount Create(UserAccount account, out IList<ErrorMessage> errors)
{
    errors = _modelValidator.Validate(account);

    if (errors.Any())
    {
        return null;
    }

    if (_userRepo.UsernameExists(account.Username))
    {
        errors.Add(new ErrorMessage("Username has already been registered."));
        return null;
    }

    account = _userRepo.CreateUserAccount(account);

    return account;
}
Run Code Online (Sandbox Code Playgroud)

我应该抛出某种验证异常吗?或者我应该返回错误消息?

c# exception

8
推荐指数
2
解决办法
1183
查看次数

黑莓录音示例代码

有没有人知道一个好的存储库来获取BlackBerry的示例代码?具体来说,这些样本将帮助我学习录制音频的机制,甚至可能对其进行采样并对其进行一些动态信号处理?

我想读取传入的音频,如果需要的话,逐个样本,然后处理它以产生所需的结果,在这种情况下是可视化器.

audio blackberry mmapi java-me

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

OSGi部署管理服务的状态

OSGi应用程序由称为bundle的模块组成.问题是,任何合理大小的应用程序都会有大量的捆绑包(很容易就是数百个,只需查看Eclipse IDE的plugins目录),这样在管理或部署应用程序时,您需要比单个捆绑包更粗糙的粒度.

OSGi服务纲要规范包含部署管理服务,该服务将部署包定义为可以作为单个单元部署,升级,卸载等的捆绑和其他工件(例如配置)的集合.

不幸的是,我找不到有关Deployment Admin实施,工具或用户的更多信息.

这项服务的状态如何?有没有人对Deployment Admin有任何经验,意见或建议?

此外,我认为Spring dm-server具有捆绑应用程序范围集合(PAR文件)的概念,Eclipse Equinox正在研究嵌套框架以解决这个问题.这些方法如何与Deployment Admin相关?

java osgi

14
推荐指数
2
解决办法
1858
查看次数

检查IEnumerable(Of T)中是否没有元素 - Linq元素和量词运算符

对于我的功能

IEnumerable<CallbackListRecord> LoadOpenListToProcess(CallbackSearchParams usp);
Run Code Online (Sandbox Code Playgroud)

当序列不包含任何元素时,此行会出错(应该如此)

CallbackListRecord nextRecord = CallbackSearch.LoadOpenListToProcess(p).First();
Run Code Online (Sandbox Code Playgroud)

我已将其更改为以下内容

CallbackListRecord nextRecord = null;
IEnumerable<CallbackListRecord> nextRecords = CallbackSearch.LoadOpenListToProcess(p);
if (nextRecords.Any())
{
    nextRecord = nextRecords.First();
}
Run Code Online (Sandbox Code Playgroud)

是否有更好,更简单或更优雅的方法来确定IEnumerable序列是否没有元素?

c# linq ienumerable element

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

在SQL中从另一行中减去一行数据

我已经厌倦了一些SQL,我有几行数据,我想从前一行中减去一行并让它一直重复.

所以这是表:

CREATE TABLE foo (
  id,
  length
)
INSERT INTO foo (id,length) VALUES(1,1090)
INSERT INTO foo (id,length) VALUES(2,888)
INSERT INTO foo (id,length) VALUES(3,545)
INSERT INTO foo (id,length) VALUES(4,434)
INSERT INTO foo (id,length) VALUES(5,45)

我希望结果显示第三列称为差异,这一行是从下面的一行减去,最后一行从零减去.

+------+------------------------+
| id   |length |  difference  |
+------+------------------------+
|    1 | 1090  |  202         |
|    2 |  888  |  343         |
|    3 |  545  |  111         |
|    4 |  434  |  389         |
|    5 |   45  |   45         |

我尝试过自我加入,但我不确定如何限制结果,而不是让它自行循环.我不能依赖于给定结果集的id值是顺序的,所以我没有使用那个值.我可以扩展架构以包含某种顺序值.

这就是我尝试过的: …

mysql sql join subtraction

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

使用SCons实现"安装"目标

我尝试设置一个构建系统来构建一个共享的lib MySharedLib和一个依赖MySharedLib的二进制MyBinary.构建系统应该能够在被要求时安装MySharedLibMyBinary,并且只有在被要求时才能安装.

import os.path

env = Environment()
env.Append(CCFLAGS='-g -Wall -ansi -O2')

prefix = '/usr/local'
lib_dir = os.path.join(prefix, 'lib')
bin_dir = os.path.join(prefix, 'bin')
Export('env prefix lib_dir bin_dir')

libMySharedLib = SConscript('libMySharedLib/SConscript')
MyBinary   = SConscript('MyBinary/SConscript')

env.Alias('install', env.Install(lib_dir, libMySharedLib))
env.Alias('install', env.Install(bin_dir, MyBinary))
Run Code Online (Sandbox Code Playgroud)

当我在没有命令行参数的情况下运行SCons时,会构建MySharedLib和MyBinary,但它也会尝试安装它们.我希望它们只在我要求安装目标时安装.我尝试了很多次,阅读了文档,但我无法弄明白.

scons

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

什么是Android的冰柱参数?

我注意到在一些编码中人们使用icicle和onCreate方法,我想知道它究竟是什么:

public class About extends Activity {
    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.whatup);
    }
Run Code Online (Sandbox Code Playgroud)

这是一回事savedInstanceState吗?

android

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

C#泛型方法并返回从xml在方法中创建的参数化类型的对象

我有一个方法,我想返回参数化类型T ie的对象实例.Foo<T>.

类型T在方法中使用GetType()XML文件中的字符串元素进行实例化.由于类或方法在创建之前都不知道它,我也无法参数化.

有没有办法可以Foo<T>从非泛型方法返回一个类型的对象?

编辑:这是一个方法签名,如:

 public Foo<T> getFooFromXml(string name) {
Run Code Online (Sandbox Code Playgroud)

在里面创建类型的地方,方法和类都是非泛型的?

.net c# generics types

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

在PowerShell中捕获EXE输出

先是一点背景.

我的任务是使用GPG(gnupg.org)使用Powershell脚本加密文件.我正在调用的特定exe只是gpg.exe.我想在执行命令时捕获输出.

例如,我在powershell中导入一个公钥,如下所示:

& $gpgLocation --import "key.txt"
Run Code Online (Sandbox Code Playgroud)

$ gpgLocation只是gpg.exe的文件位置(默认为"C:\ Program Files\GNU\GnuPG\gpg.exe"

我的全部问题是,如果我尝试:

& $gpgLocation --import "key.txt" | out-file gpgout.txt
Run Code Online (Sandbox Code Playgroud)

我得到的只是一个1kb文件,名称相应,但它完全是空白的.我已经为out-file尝试了几个标志,看看我是否遇到了怪癖.

我也尝试将命令发送到此代码(并使用通常的out-file等捕获输出):

param
(
    [string] $processname, 
    [string] $arguments
)

$processStartInfo = New-Object System.Diagnostics.ProcessStartInfo;
$processStartInfo.FileName = $processname;
$processStartInfo.WorkingDirectory = (Get-Location).Path;
if($arguments) { $processStartInfo.Arguments = $arguments }
$processStartInfo.UseShellExecute = $false;
$processStartInfo.RedirectStandardOutput = $true;

$process = [System.Diagnostics.Process]::Start($processStartInfo);
$process.WaitForExit();
$process.StandardOutput.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我很绝望!

powershell

28
推荐指数
3
解决办法
4万
查看次数

SQL索引性能

我们有一张叫做table1...... 的桌子

(c1 int indentity,c2 datetime not null,c3 varchar(50) not null,
   c4 varchar(50) not null,c5 int not null,c6 int ,c7 int)

on column c1 is primary key(clusterd Index)
on column c2 is index_2(Nonclusterd) 
on column c3 is index_2(Nonclusterd)
on column c4 is index_2(Nonclusterd)
on column c5 is index_2(Nonclusterd)
Run Code Online (Sandbox Code Playgroud)

它包含1000万条记录.我们有几个程序指向具有不同搜索条件的"table1":

select from table1 where c1=blah..and c2= blah.. and c3=blah..
select from table1 where c2=blah..and c3= blah.. and c4=blah..
select from table1 where c1=blah..and c3= blah.. and c5=blah..
select from …
Run Code Online (Sandbox Code Playgroud)

sql t-sql database sql-server indexing

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