我相信在正确编码的系统中 - 错误(作为错误或异常)是不可能的(除了DB/memcached服务器关闭导致查询失败).我们的代码不应该依赖任何假设才能正常工作,并且应该尽可能地作为防弹.
但是,为了确保我们的系统以最友好的方式处理问题,我们必须构建并实施某种"捕获系统",以确保如果出现任何问题,我们的服务器人员和最终用户都会照顾好.
为此,PHP提供了两种解决方案 - 错误和异常.错误由5个值组成,而异常由包含在对象中的5个值组成.两者都允许在构建应用程序时非常有用的回溯.
5个值是$ error_code,$ error_message,$ file,$ line,$ context
通常,在我们努力进行适当的OOP编程时,默认选择始终是追求对象 - 但在这种情况下,我不确定它们实际上是多么有益.通过使用异常,浪费了额外的内存以满足在对象中包装值的需要(这通常还需要包含异常类的额外文件).此外,您必须在TRY/CATCH {}块中包装您认为可能失败的任何代码.这使得错误处理方法对人为错误开放,因为开发人员可能无法解决故障点.为了安全防范这种情况,您可以使用set_exception_handler,它将传递任何未捕获的异常.关于异常处理程序的坏处是执行将在调用exception_handler之后停止 - 因此如果不在try/catch块中捕获,则不存在可恢复/忽略的异常.
另一方面,错误总是全局的,可以由set_error_handler设置的任何函数/类处理.这消除了对额外异常类,对象内存或try/catch代码行的需要.与异常一样,错误也伴随着构建错误代码(与异常不同),您可以使用它来继续脚本执行,以解决轻微或不重要的脚本问题.此外,大多数PHP函数都会触发错误,因此您不会违反语言流程.
因此,无论如何您必须支持错误处理(对PHP语言做),浪费额外代码和内存以及实现异常的目的是什么?我们只是盲目地这样做是因为它是对象形式的错误,还是应用程序设计中存在真正的好处,而正常错误无法承受我们?
我想我想能够找到任何存储空间,而不仅仅是系统盘,但这是最重要的.
如何要求提升HKLM的注册表访问权限?我想将EnableLinkedConnections添加到"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System \".我也不想使用清单文件.我试过下面的代码,但似乎没有帮助.
RegistryPermission f = new RegistryPermission(
RegistryPermissionAccess.Create,
@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
Policies\System\EnableLinkedConnections\1");
f.Demand();
Run Code Online (Sandbox Code Playgroud)
谁能告诉我,我做错了什么?谢谢
每个Django模型都有一个id自动创建的默认主键.我希望模型对象具有另一个属性big_id,其计算方式如下:
big_id = id * SOME_CONSTANT
我想访问big_id的model_obj.big_id,而无需一个名为列对应的数据库表big_id.
这可能吗?
我正在尝试写一个肥皂扩展.但框架没有加载它.
我已经添加到web.config了
<webServices>
<soapExtensionTypes>
<add group="High" priority="1" type="Lisa.Admin.SoapExceptionExtension,Lisa.Admin" />
</soapExtensionTypes>
</webServices>
Run Code Online (Sandbox Code Playgroud)
即使我将类型更改为某些废话也不会抛出异常.
我在java中创建了一个应用程序.现在我想把它交给几个客户.我希望每个客户都必须购买一个串行密钥才能使用该软件.没有这个密钥,软件就不应该像市场上的其他软件那样运行.
我怎样才能做到这一点?
我知道我无法完全保护它.我只想要一个简单的串行密钥功能,这样非技术人员和新手程序员就很难破解安全性.
我意识到标题需要不止一次阅读才能理解...... :)
我实现了一个自定义属性,我应用于我的类中的方法.我应用属性的所有方法都有相同的签名,因此我为它们定义了一个委托:
public delegate void TestMethod();
Run Code Online (Sandbox Code Playgroud)
我有一个接受该委托作为参数的结构
struct TestMetaData
{
TestMethod method;
string testName;
}
Run Code Online (Sandbox Code Playgroud)
是否有可能从反射中获得具有自定义属性的方法并将其传递给结构中的'方法'成员?
我知道你可以调用它,但我认为反射不会给我从我的类中可以强制转换为TestMethod委托的实际方法.
这将是一个很长的帖子,只是为了好玩,所以如果你没有太多时间去帮助人们更重要的问题:)
最近在xbox上发布了一款名为"Tower Bloxx"的游戏.游戏的一部分是以最佳方式在场地上放置不同颜色的塔,以最大化最有价值的塔的数量.我写了一个算法,可以确定最有效的塔位置,但它不是非常有效,而且几乎只是强制所有可能的组合.对于具有4种塔型的4x4油田,它可在约1小时内解决,5种塔型需要约40小时,这太多了.
以下是规则: 有5种类型的塔可以放置在一个场地上.有几种类型的字段,最简单的是4x4矩阵,其他字段有一些"空白",你无法构建.您的目标是尽可能多地在场地上放置最有价值的塔,以最大化场地上的总塔值(假设所有塔都是一次建造的,没有转弯).
塔型(按从少到最有价值的顺序):
这意味着,例如,绿色塔楼应该在北,南,西或东邻居单元中至少有1个红色塔和1个蓝色塔(对角线不计算).白塔应该被所有其他颜色包围.
这是我在4x4场上的4个塔的算法:
我想出的唯一优化是跳过不包含任何最有价值的塔的组合.它跳过一些处理,但我仍然遍历所有4 ^ 16组合.
有人想过如何改进这个?如果在java或php中,代码示例会很有用.
------- --------更新
添加更多非法状态后(黄色不能在角落中建造,白色不能建在角落和边缘,场地应至少包含一个类型的塔),意识到只有1个白色塔可能建在4x4场地上并优化java代码,总时间从40小时降至16小时.也许线程会将其降低到10小时,但这可能是暴力限制.
我的同事和我对.NET运行时有一些误解.我编写了一个随机崩溃的WPF应用程序(针对3.5),在事件日志中,我们将.NET Runtime 2.0错误报告视为源.
只是为了确认:
我对吗?
c# ×4
.net-3.5 ×1
algorithm ×1
asp.net ×1
attributes ×1
cocoa ×1
delegates ×1
django ×1
frameworks ×1
game-theory ×1
haml ×1
hard-drive ×1
installer ×1
java ×1
licensing ×1
methods ×1
objective-c ×1
oop ×1
php ×1
python ×1
reflection ×1
registry ×1
sass ×1
security ×1
textmate ×1
uac ×1
web-config ×1