小编Ser*_*sta的帖子

Java等效于.NET System.InvalidOperationException

我不像Java那样熟悉Java的异常包.我处在一种情况下,如果用C#编程,我会抛出一个System.InvalidOperationException.

在创建自己的java.lang.RuntimeException子类之前,我需要知道是否存在类似的Java应该抛出的异常类型.

确切的情况是:

我的类是一个值对象,它提供一个int intValue()方法,返回一个int.但是,在某些情况下,当前值不能作为int提供,因此该类还提供了boolean isInteger()允许API用户知道何时intValue()可以安全地调用的情况.

如果主叫用户呼叫intValue()isInteger()false一个异常应该被抛出.

问题是:什么类型的例外?

我知道这个问题可能没有正确答案,但考虑到我没有很多设计Java API的经验,我想从其他Java开发人员那里了解他们期望在这种情况下抛出什么.

谢谢

java exception

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

通过重复给定次数的另一个字符串来创建NSString

这应该很简单,但我很难找到最简单的解决方案.

我需要一个NSString等于另一个与自身连接一次的字符串.

有关更好的解释,请考虑以下python示例:

>> original = "abc"
"abc"
>> times = 2
2
>> result = original * times
"abcabc"
Run Code Online (Sandbox Code Playgroud)

任何提示?


编辑:

在看完OmniFrameworks的这个实现之后,我将发布一个类似Mike McMaster答案的解决方案:

// returns a string consisting of 'aLenght' spaces
+ (NSString *)spacesOfLength:(unsigned int)aLength;
{
static NSMutableString *spaces = nil;
static NSLock *spacesLock;
static unsigned int spacesLength;

if (!spaces) {
spaces = [@"                " mutableCopy];
spacesLength = [spaces length];
    spacesLock = [[NSLock alloc] init];
}
if (spacesLength < aLength) {
    [spacesLock lock];
    while (spacesLength …
Run Code Online (Sandbox Code Playgroud)

string cocoa objective-c

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

从C#打印堆栈跟踪信息

作为我们产品中某些错误处理的一部分,我们想要转储一些堆栈跟踪信息.但是,我们遇到许多用户只需截取错误消息对话框的屏幕截图,而不是向我们发送程序中可用的完整报告的副本,因此我想在此对话框中提供一些最小的堆栈跟踪信息.

我机器上的.NET堆栈跟踪如下所示:

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(String path)
at LVKWinFormsSandbox.MainForm.button1_Click(Object sender, EventArgs e) in C:\Dev\VS.NET\Gatsoft\LVKWinFormsSandbox\MainForm.cs:line 36
Run Code Online (Sandbox Code Playgroud)

我有这个问题:

格式看起来是这样的:

at <class/method> [in file:line ##]
Run Code Online (Sandbox Code Playgroud)

但是,atin关键字,我认为如果它们运行,比如挪威的.NET运行时而不是我安装的英文版,它们将被本地化.

有没有办法让我以语言中立的方式分离这个堆栈跟踪,这样我才能显示那些有这个条目的文件和行号?

换句话说,我想从上面的文字中获得这些信息:

C:\Dev\VS.NET\Gatsoft\LVKWinFormsSandbox\MainForm.cs:line 36
Run Code Online (Sandbox Code Playgroud)

您提供的任何建议都会有所帮助.

c# error-handling parsing stack-trace

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

使SimpleDateFormat.parse()在无效日期失败(例如,月份大于12)

我正在使用java.text.SimpleDateFormat解析表单的字符串"yyyyMMdd".

如果我尝试解析一个月份大于12的字符串,而不是失败,它将转到下一年.完全可运行的repro:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class ParseDateTest {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
        Date result = format.parse("20091504"); // <- should not be a valid date!
        System.out.println(result); // prints Thu Mar 04 00:00:00 CST 2010
    }
 }
Run Code Online (Sandbox Code Playgroud)

我宁愿ParseException抛出一个.

是否存在强制异常发生的非hacky方式?我的意思是,我不想手动检查月份是否大于12.这有点荒谬.

谢谢你的任何建议.

注意:我已经了解了Joda Time,但我需要在没有外部库的普通JDK中完成.

java parsing date

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

Unix shell文件复制flattening文件夹结构

在UNIX bash shell(特别是Mac OS X Leopard)上,将具有特定扩展名的每个文件从文件夹层次结构(包括子目录)复制到同一目标文件夹(没有子文件夹)的最简单方法是什么?

显然存在源层次结构中存在重复的问题.我不介意他们被覆盖.

示例:我需要复制以下层次结构中的每个.txt文件

/foo/a.txt
/foo/x.jpg
/foo/bar/a.txt
/foo/bar/c.jpg
/foo/bar/b.txt
Run Code Online (Sandbox Code Playgroud)

到名为'dest'的文件夹并获取:

/dest/a.txt
/dest/b.txt
Run Code Online (Sandbox Code Playgroud)

unix shell

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

Eclipse:用于在控制台之间切换的键盘快捷键?

在Eclipse中(我使用的是版本3.6又称Helios),您可以使用Alt+ Command+ Q C(在Mac OS X或Windows + Linux上的Alt+ Shift+ Q C)来关注控制台视图.好.非常好.

我的问题是,为了在该视图内的控制台之间切换,您必须单击"显示所选控制台"图标旁边的可笑小箭头.看到:

替代文字http://i28.tinypic.com/2vkl447.jpg

我发现这很烦人,因为我完全是面向键盘的,这实际上是我在Eclipse中使用鼠标的唯一方法.我经常一次启动多个运行配置,每个都打开一个新的控制台.试图点击那个小箭头以便1)查看哪些控制台是打开的以及2)在它们之间切换是令人讨厌的.=(

在控制台视图中是否有任何键盘友好的方式在打开的控制台之间切换?

eclipse keyboard-shortcuts

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

适用于Mac的Good Git存储库查看器

任何人都可以为Git推荐一个好的存储库查看器,类似于gitk,可以在Mac OS X Leopard上运行吗?(我不是说gitk不起作用)

当然我想要一个原生的Mac应用程序,但是由于我还没有找到,gitk的最佳选择是什么?

我知道gitview,但我期待尽可能多地评估替代方案.

http://sourceforge.net/projects/gitview

git macos version-control

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

如何避免意外'hg push'而不是'hg qpush'?

对于那些使用Mercurial和MQ扩展的人:

这是我第二次意外地将更改提交到中央存储库(hg push)而不是将补丁应用到我的工作目录(hg qpush).

我认为这是非常不幸的,因为这是一个非常简单的错误,并且具有非常严重的后果(为了生成一个新的提交,"撤消"las的一个,所以至少不得不为每个提交的更改做一个hg backout额外的操作hg push.中央存储库,但历史变得令人费解和不愉快.

我的目标是在orden的环境中配置一些别名或其他东西,以便hg push更加难以做到.

你有什么建议吗?我想的是:

[alias]
push=      <-- how to NOP the push command??
pushtoserver=push
Run Code Online (Sandbox Code Playgroud)

由于这是一个完全主观的问题,这就像社区维基一样.

谢谢!

configuration mercurial development-environment mercurial-queue

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

如果我没有Visual Basic 6.0并且需​​要编译VB6项目该怎么办?

客户希望我对VB 6.0应用程序进行一些维护工作(迁移到.NET也在管道中),但他没有开发工具,因为他只收到源代码并运行原始程序员的应用程序,谁不再可用.

据我所知,微软不销售Visual Studio 6.0.如何在没有VB6的情况下修改和编译VB6应用程序的源代码?或者如果微软不销售Visual Studio 6.0,我将在哪里获得?

即使我将所有内容迁移到.NET而不发布新的VB6版本,我希望能够打开项目并看到它编译并运行以更好地理解它.

我有VS 2005和VB 2008.但我明白,如果我尝试打开项目,代码将转换为VB.NET,这不是我想要更好地了解项目之前的想法.

vb6 devtools visual-studio

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

跨模型的Django Queryset?

我有几个模型,并希望返回属于用户的所有模型的查询集,我想知道是否可以从多个模型返回一个Queryset?

django django-models django-queryset

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