我有一些代码为用户提供用户ID,然后向该用户发送电子邮件.
emailUtil.sendEmail(userId, "foo");
public void sendEmail(String userId, String message) throws MailException {
/* ... logic that could throw a MailException */
}
Run Code Online (Sandbox Code Playgroud)
MailException 可能会因为多种原因而抛出,电子邮件地址出现问题,邮件模板出现问题等.
我的问题是这样的:你是为这些异常中的每一个创建一个新的异常类型然后单独处理它们还是创建一个MailException然后将一些东西存储在允许的异常(计算机可读的东西,而不是描述文本)中我们根据实际发生的事情做不同的事情.
编辑:作为澄清,例外不是日志和什么不是,这与代码如何对它们做出反应有关.为了继续使用邮件示例,让我们说当我们发送邮件时,它可能会因为您没有电子邮件地址而失败,或者因为您没有有效的电子邮件地址,或者它可能会失败等等.
我的代码希望对每个问题做出不同的反应(主要是通过更改返回给客户端的消息,但也包括实际逻辑).
最好是针对这些问题中的每一个进行异常实现,或者是一个具有内部特征的一个伞状异常(一个枚举说),让代码区分它是什么类型的问题.
我在任何地方都没有得到答案.正则表达式匹配和替换的运行时复杂性是多少?
编辑:我在python中工作.但是想知道大多数流行的语言/工具(java,perl,sed).
我目前正在从UI编写ASP.Net应用程序.我正在实施一个MVP架构,因为我厌倦了Winforms,并希望能够更好地分离关注点.
因此,使用MVP,Presenter处理由View引发的事件.这是我用来处理用户创建的一些代码:
public class CreateMemberPresenter
{
private ICreateMemberView view;
private IMemberTasks tasks;
public CreateMemberPresenter(ICreateMemberView view)
: this(view, new StubMemberTasks())
{
}
public CreateMemberPresenter(ICreateMemberView view, IMemberTasks tasks)
{
this.view = view;
this.tasks = tasks;
HookupEventHandlersTo(view);
}
private void HookupEventHandlersTo(ICreateMemberView view)
{
view.CreateMember += delegate { CreateMember(); };
}
private void CreateMember()
{
if (!view.IsValid)
return;
try
{
int newUserId;
tasks.CreateMember(view.NewMember, out newUserId);
view.NewUserCode = newUserId;
view.Notify(new NotificationDTO() { Type = NotificationType.Success });
}
catch(Exception e)
{
this.LogA().Message(string.Format("Error Creating User: {0}", e.Message)); …Run Code Online (Sandbox Code Playgroud) 在C#泛型之前,每个人都会通过创建实现IEnumerable的集合库来为其业务对象编写集合
IE:
public class CollectionBase : IEnumerable
Run Code Online (Sandbox Code Playgroud)
然后从中派生出他们的Business Object集合.
public class BusinessObjectCollection : CollectionBase
Run Code Online (Sandbox Code Playgroud)
现在使用通用列表类,是否有人只使用它?我发现我使用了两种技术的妥协:
public class BusinessObjectCollection : List<BusinessObject>
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我喜欢强类型名称而不是仅仅传递列表.
你的方法是什么?
我有一个Delphi 7应用程序,它有两个文档视图(例如,所见即所得HTML编辑可能有WYSIWYG视图和源视图 - 而不是我的真实应用程序).它们可以在单独的窗口中打开,也可以停靠在主窗口中的选项卡中.
如果我从其中一个单独的表单打开模式对话框,则主表单将显示在前面,并在Windows任务栏中显示为选定的窗口.假设主窗体是WYSIWYG视图,并且源视图被激活.您转到源视图中的特定点并插入图像标记.将出现一个对话框,允许您选择并输入图像所需的属性.如果WYSIWYG视图和源视图重叠,则WYSIWYG视图将显示在前面,并且隐藏源视图.一旦对话框被解除,源视图就会重新出现.
我已经尝试将所有者和ParentWindow属性设置为与其相关的表单:
dialog := TDialogForm.Create( parentForm );
dialog.ParentWindow := parentForm.Handle;
我该如何解决这个问题?我还应该尝试什么?
鉴于人们似乎对我的例子感到磕磕绊绊,也许我可以尝试一个更好的例子:一个文本编辑器,允许你同时打开多个文件.您打开的文件位于选项卡(如Delphi IDE中)或其自己的窗口中.假设用户调出拼写检查对话框或查找对话框.发生的情况是,如果文件正在其自己的窗口中进行编辑,则在显示模式对话框时,该窗口将以z顺序发送到主窗体下方; 关闭对话框后,它将返回到原始的z顺序.
注意:如果您正在使用Delphi 7并寻找此问题的解决方案,请在页面下方查看我的答案,看看我最终做了什么.
我正在尝试找到一个开源业务规则引擎,它具有构建规则的良好界面.
或者至少有一个在.Net平台上运行良好并且在过去12个月的某个时间更新过.
谢谢,
该主题大部分都说明了 - 静态方法无法在接口中声明的原因是什么?
public interface ITest {
public static String test();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了以下错误(至少在Eclipse中):"接口方法ITest.test()的非法修饰符;只允许使用public和abstract".
根据我能找到的信息,他们都解决了同样的问题 - 更多深奥的操作,如数组包含和交集(&&,@>,<@等).但是我会对何时使用其中一个(或两者都不可能)的建议感兴趣.
在PostgreSQL文档大约有一些这方面的信息:
但是,当内存到索引大小比例开始变小(即索引大小变得比可用内存大得多)时,我会特别感兴趣知道是否存在性能影响?我在#postgresql IRC频道上被告知GIN需要将所有索引保留在内存中,否则它将无效,因为与B-Tree不同,它不知道从磁盘读入哪个部分一个特定的查询?问题是:这是真的(因为我也被告知与此相反)?GiST是否有相同的限制?在使用这些索引算法之一时,我应该注意其他限制吗?
提问这个问题的方法可能不止一种,所以这里是问题的解释.我正在做主人并且做了一些事情,然后我决定把这项工作搁置一边.我支持了一些提交,然后在我开始我的垃圾工作之前分支.实际上这很好用,我刚才有一个不同的分支作为我的主要开发分支.我想知道我怎么能改变一切,所以我再次为大师工作,但它没有我的垃圾工作,并说工作是在另一个分支.
可以通过某些方式询问/解决这个问题:如何将我的主分支重命名为其他内容,然后将其他内容重命名为master?如何备份master然后导致我已经备份的所有提交都在另一个分支上?
感谢所有(快速)答案!他们都很好.
c# ×3
.net ×2
exception ×2
java ×2
asp.net ×1
branch ×1
class-design ×1
collections ×1
delphi ×1
delphi-7 ×1
editor ×1
generics ×1
gist-index ×1
git ×1
gwt-gin ×1
indexing ×1
interface ×1
methods ×1
mvp ×1
postgresql ×1
regex ×1
rule-engine ×1
static ×1
vim ×1