是否有一种优雅的方法来处理finally块中抛出的异常?
例如:
try {
// Use the resource.
}
catch( Exception ex ) {
// Problem with the resource.
}
finally {
try{
resource.close();
}
catch( Exception ex ) {
// Could not close the resource?
}
}
Run Code Online (Sandbox Code Playgroud)
你如何避免try/ catch在finally街区?
最近我尝试通过实现通用接口来创建通用子类.
public interface IModule<T> where T : DataBean { ..... }
public class Module<T> : IModule<T> where T : DataBean { .... }
Run Code Online (Sandbox Code Playgroud)
似乎我不能依赖于基本接口中定义的任何T限制,我需要自己重新声明它们.
MSDN刚刚提供:
使用子类泛型类型参数时,必须重复子类级别的基类级别规定的任何约束.例如,派生约束
为什么不能从基类/接口推断出约束?
使用nodejs/express和mongoose查看nodejs服务器堆栈
什么被认为是最佳实践解决方案?
(1)创建一个
mongoose datamodel模块然后使用模型对象(2)创建一个内部使用mongoose 模型的包装器数据层模块
优点(1)
我非常喜欢mongoose给我的OOP样式类,添加我自己的方法,我自己的setter和getter,我可以添加验证和事件处理程序,并使用DataModel而无需在另一个模块中重新定义它.
(2)
我应该能够通过更简单的实现(测试等)来模拟数据层,或者在需要时切换数据库.
你怎么看?
我正在尝试解决一个经典问题 - 我有一个多线程应用程序,它运行一些处理器密集型计算,带有GUI界面.
每当其中一个线程完成一项任务时,我就想更新一个表上的状态
taskID | 状态
我以下列方式使用DataGridView和BindingList:
BindingList<Task> tasks;
dataGridView.DataSource = tasks
public class Task : INotifyPropertyChanged
{
ID{get;}
Status{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
后台线程可以安全地更新任务的状态吗?GUI中会以正确的顺序看到更改吗?
第二个问题:我什么时候需要致电PropertyChanged?我试着在有和没有通话的情况下跑步,似乎没有打扰..
第三个问题:我在MSDN上看到dataGridView使用BindingSource作为DataGridView.DataSource和BindingList之间的中介这真的有必要吗?
c# ×2
data-binding ×1
exception ×1
finally ×1
generics ×1
inheritance ×1
java ×1
mongoose ×1
node.js ×1
try-catch ×1