我正在谷歌应用引擎(webapp框架)上开发一个项目.我需要你的人来评估我如何处理异常.
我正在处理4种类型的例外:
以下是我处理它们的方法:
我已经将webapp.requesthandler类子类化,并覆盖了handle_exceptions方法.每当发生异常时,我都会将用户带到友好的"我们很抱歉"页面,同时向管理员发送带有回溯的消息.
在客户端,我(将)使用js并在服务器端验证.除了根据编程逻辑验证输入(检查:现金输入是浮动类型?)和业务规则(检查:用户是否有足够的点来采取该行动?),我在这里(作为具有非网络经验的编码器) ,我还要检查恶意意图.我应该采取什么措施来对付恶意行为?
我有一个处理错误URL的catch-all URL.也就是说,我将用户带到一个自定义的"页面不存在"页面.我想在这里我没有任何问题.
错误的查询字符串可能会引发异常,如果留给他们自己.如果ID不存在,则该方法返回None(异常即将发生).如果参数不方便,代码会引发异常.在这里,我认为我必须提出404并将用户带到自定义"页面不存在"页面.我该怎么办?
你有什么看法?提前致谢..
python google-app-engine exception-handling web-applications
我有这个脚本 -
import lxml
from lxml.cssselect import CSSSelector
from lxml.etree import fromstring
from lxml.html import parse
website = parse('http://example.com').getroot()
selector = website.cssselect('.name')
for i in range(0,18):
print selector[i].text_content()
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,for循环在我预先设置的次数之后停止.我希望for循环只有在打印完所有内容后才会停止.
作为作业的一部分,我需要编写两个函数:
由于某种原因,两个函数分别完美地工作,但是当我尝试在sum函数的结果上使用print函数时,它会在print函数的开头改变sum的值,并输出错误的值.当我使用printf在main中打印相同的值时,没有问题.我的代码详述如下.有任何想法吗?
void main()
{
int a[1] = { 1 },
b[1] = { 2 };
int * *pa, **pb;
List lst1, lst2;
List sum;
pa = (int * *) malloc(sizeof(int * )); * pa = &a[0];
pb = (int * *) malloc(sizeof(int * )); * pb = &b[0];
lst1 = arrToList(pa, 1);
lst2 = arrToList(pb, 1);
addNumbers(lst1, lst2, &sum);
//printf("%d\n",*(sum.head->dataPtr));
printNumber(sum);
}
//a function that recieves a number represented ad a list and prints it
void printNumber(List …Run Code Online (Sandbox Code Playgroud) Attacklab.wmd_env.buttons=Attacklab.wmd_env.buttons||_4;
Run Code Online (Sandbox Code Playgroud)
什么是|| 在这种情况下呢?
将_4添加到Attacklab.wmd_env.buttons的数组中?
我想通过改变背景颜色(或者只是一条线?)来突出显示vim中的包边/文本宽度.很多IDE都有这个.我嘲笑我在说什么:

有人知道这可以在macvim或gvim中完成吗?
我正在使用Eclipse 3.4.2来开发我的代码.作为我的项目定义的一部分,我引用了一个我附加了源代码的实用程序库.到目前为止,非常好 - 当我从库中调出类并且在调试时,我可以看到该源代码.
现在,我想对其中一个类进行更改,同时仍保留Eclipse Java编辑器的所有功能(特别是工具提示和快速修复等功能).当我查看源代码时,这些功能似乎有效(例如,我可以按CTRL + LClick方法名称),但它是只读的.另一方面,我可以显式打开源文件,这将允许我编辑它,但我失去了所有"智能"编辑功能.
我最近从IntelliJ切换到Eclipse,这是可能的,所以我希望它也在Eclipse中.请注意,虽然我可以简单地将代码作为项目包含在我的工作区中,但我真的不愿意.工作区已经很大了,我不想通过添加我很少会碰到的项目来进一步降低Eclipse的速度.
我很想喝一些现代动态语言koolaid,所以我相信Michael Foord的博客和播客上的所有内容,我已经买了他的书(并阅读了一些内容),并且我添加了一个嵌入式IPy运行时大概现有的应用程序大约一年前(虽然这是为其他人,我自己并没有真正使用它).
现在我需要做一些相当简单的代码生成工作,我将在一些.net对象(自定义,C#-authored对象)上调用几个方法,创建一些字符串,编写一些文件等.
尝试这种经历让我觉得这个小男孩觉得他是唯一能看到皇帝没穿衣服的人.如果你正在使用IronPython,我真的很感激你知道如何处理它的以下几个方面:
我真的很想相信这些东西,所以我仍然在假设我错过了一些东西.我真的想知道其他人是如何处理IPy的,特别是如果他们这样做的方式并不像我们只是失去了15年的工具开发价值.
更新:(2010年7月)这个问题看起来很陈旧,现在有两个官方的IronPython工具用于VS和PyCharm,这两个工具都显示了许多承诺,当我写这个时它们都没有.感谢所有回答的人.对于那些没有使用自动重构工具而感到高兴的人,我是否可以建议您永远不要使用具有良好自动重构功能的IDE.在你拥有之后,你会想知道为什么你认为你对find-replace感到高兴,而你再也不想没有它了.如果不出意外,立即重命名标识符而不必担心替换错误的文本位的能力会改变您命名内容的整个方法.
以下是两种方法:
优点:我必须输入确切数量的参数类型,所以如果我发出错误,编译器会警告我(顺便说一下,有没有办法防止错误地在参数列表上切换两个Integer的问题?)
缺点:如果我有很多属性,那么实例化行可以变得非常长并且可以跨越两行或更多行
优点:我可以清楚地看到我正在设置的内容,所以如果我做错了什么我可以在输入时立即查明它(我不能在切换两个相同类型的变量时出现前一个错误)
缺点:具有大量属性的对象的实例化可能需要多行(不知道这是否真的是一个con),如果我忘记设置属性,编译器就不会说任何内容.
你会做什么以及为什么?你知道任何光模式(考虑到应该在每次实例化7个以上的属性时使用它)吗?我问这个是因为我倾向于不喜欢大型构造函数,我无法快速找出我正在寻找的变量的位置,另一方面我发现"set all properties"容易遗漏一些属性.
请随意在优缺点中论证我的假设,因为它们只是我的想法:)
更新 - 我发现的一个与此相关的问题:构建大的不可变对象,而不使用具有长参数列表的构造函数
在以下示例中,我得到:
error C2300: 'UnmanagedClass' : class does not have a finalizer called '!SmartPointer'
Run Code Online (Sandbox Code Playgroud)
如果我删除operator->,则此错误消失.有人可以解释为什么会这样吗?
// Unmanaged class.
class UnmanagedClass { };
public ref class SmartPointer {
public:
SmartPointer(UnmanagedClass* u) : m_ptr(u) { }
~SmartPointer() { this->!SmartPointer(); }
!SmartPointer() { delete m_ptr; }
// This line triggers C2300.
UnmanagedClass* operator->() { return m_ptr; }
};
int main() {
SmartPointer^ s = gcnew SmartPointer(new UnmanagedClass);
}
Run Code Online (Sandbox Code Playgroud) 我觉得这是一个愚蠢的问题,但无论如何我都会问...
我有一组NSDictionary对象,其键/值对对应于我创建的自定义类,调用它MyClass.有一种简单或"最佳实践"的方法让我基本上做MyClass * instance = [地图NSDictionary属性的事情MyClass ];吗?我有一种感觉,我需要做一些事情,NSCoding或者NSKeyedUnarchiver,而不是自己偶然发现,我认为那里的人可能能指出我正确的方向.
java ×2
python ×2
.net ×1
c ×1
c++-cli ×1
collections ×1
constructor ×1
eclipse ×1
for-loop ×1
iphone ×1
ironpython ×1
iterator ×1
jar ×1
javascript ×1
linked-list ×1
lxml ×1
macvim ×1
managed-c++ ×1
nsdictionary ×1
objective-c ×1
operators ×1
setter ×1
traversal ×1
vim ×1