我正在阅读有关Java中异常处理的一些内容,以便能够编写更好的代码.好吧,我承认,我很内疚; 我已经使用了太多的try-catch {}块,我已经ex.printStackTrace()在catch中使用了,甚至没有使用正确的记录器(实际上System.out并且System.err被重定向到a PrintWriter,因此生成了日志).然而,经过几个小时的阅读,我发现自己处在一个陌生的地方:未知.如果异常被设计为传递有关流的异常状态的信息,那么如何知道WHERE是用该信息做某事的适当级别?
例如,当发生数据库错误时,是应该返回空值还是错误代码,还是抛出异常?如果抛出,那么应该处理该异常?据我所知,如果你不能对它做任何事情,那么记录异常是没用的.但是,在GUI应用程序中,这可能很容易杀死你的GUI(我使用SWT而且我经常看到这个),即使对于menuShown()方法的情况(ArrayIndexOutOfBounds如果不处理,例外将关闭应用程序).这个例子可以永远持续下去,但这里是问题摘要:
我知道这个主题是永恒的,但实际上我期待着根据你的建议审查一个150个班级的中型项目.非常感谢.
我刚刚发现了bitflags的乐趣.我有几个关于在C语言中使用bitflags的"最佳实践"的问题.我从网上找到的各种例子中学到了一些东西,但仍然有问题.
为了节省空间,我在struct(A->flag)中使用单个32位整数字段来表示几组不同的布尔属性.总共有20个不同的位#define.其中一些是真正的存在/不存在标志(STORAGE-INTERNAL与STORAGE-EXTERNAL).其他人有两个以上的值(例如互斥的格式集:FORMAT-A,FORMAT-B,FORMAT-C).我已经定义了用于设置特定位的宏(同时关闭互斥位).如果在标志中设置了特定的位组合,我还定义了用于测试的宏.
但是,上述方法中丢失的是标记的特定分组,最好由枚举捕获.对于编写函数,我想使用枚举(例如,STORAGE-TYPE和FORMAT-TYPE),以便函数定义看起来不错.我希望仅使用枚举来传递参数,使用#defined宏来设置和测试标志.
(a)如何A->flag以便携方式(跨32位/ 64位平台)将flag()定义为32位整数?
(b)我是否应该担心如何存储A->flag与#defined常量与枚举相比的潜在大小差异?
(c)我是否使事情变得不必要地复杂化,这意味着我应该坚持使用#defined常量来传递参数作为普通的ints?在这一切中我还应该担心什么?
我为这个表达不清的问题道歉.它反映了我对潜在问题的无知.
对于我正在做的项目,我必须做的一件事是删除明文文件的前X行.我说的是X因为我需要多次执行此例程,每次删除的行都不同,但是它们总是从头开始,删除第一个X然后将结果输出到同一个文件.
我正在考虑做这样的事情,我从其他教程和例子拼凑起来,我读到:
String line = null;
String tempFile = Path.GetTempFileName();
String filePath = openFileDialog.FileName;
int line_number = 0;
int lines_to_delete = 25;
using (StreamReader reader = new StreamReader(originalFile)) {
using (StreamWriter writer = new StreamWriter(tempFile)) {
while ((line = reader.ReadLine()) != null) {
line_number++;
if (line_number <= lines_to_delete)
continue;
writer.WriteLine(line);
}
}
}
if (File.Exists(tempFile)) {
File.Delete(originalFile);
File.Move(tempFile, originalFile);
}
Run Code Online (Sandbox Code Playgroud)
但是我不知道这是否会起作用,因为从第0行开始的行号或其他东西......还有,我不知道它在效率和形式方面是否是好的代码.
谢谢一堆.
我一直在听斯坦福大学的编程范例讲座系列,但我对下面的代码感到困惑(来自第20讲).有人会逐行解释这是做什么的吗?
谢谢.
(define (flatten sequence)
(cond ((null? sequence) '())
((list? (car sequence)) (append (flatten (car sequence))
(flatten (cdr sequence))))
(else (cons (car sequence)
(flatten (cdr sequence))))))
Run Code Online (Sandbox Code Playgroud) 创建无限循环的惯用方法是什么?
while(true){
calc();
}
Run Code Online (Sandbox Code Playgroud)
我想永远调用calc函数.一次又一次地调用一个函数.
编辑:我忘了提到的另一件事是calc有副作用.它进行一些计算并修改字节数组.
在Rails中request.env ['REQUEST_URI']和request.env ['REQUEST_PATH']有什么区别?它们似乎总是包含相同的值.
在我的网站上度过了许多漫长的夜晚,现在我开始进行各种安全检查,并偶然发现以下情况:
www.mysite.com/node
Run Code Online (Sandbox Code Playgroud)
这显示了用户可以访问的最新x节点.我不希望这个视图对用户可见.我当然不希望任何其他类似的观点可用.所以,我的问题是:
在积累了足够的测试后,运行它们都需要一些实时的时间,我查看了Test::Class::Loaddoc以找到运行单个测试类的提示.它提供了一种方法来做到这一点,但我必须遗漏一些东西,因为我无法使它工作.这就是我所拥有的:
我的测试目录:
drewfus:~/sandbox$ ls t/
lib/ perlcriticrc PerlCritic.t Unit.t
Run Code Online (Sandbox Code Playgroud)
t/Unit.t 包括以下内容:
use strict;
use warnings;
use Test::Class;
use Test::More 'no_plan';
use Test::Class::Load 't/lib';
Run Code Online (Sandbox Code Playgroud)
根据Test::Class::Loaddoc中的建议,我有一个基类用于我继承的每个测试类,SG::TestBase它存在于t/lib/SG/TestBase.pm:
package SG::TestBase;
use strict;
use warnings;
use base 'Test::Class';
INIT { Test::Class->runtests }
1;
Run Code Online (Sandbox Code Playgroud)
最后,这是一个示例测试类,SG::UtilsTest位于t/lib/SG/UtilsTest.pm:
package SG::UtilsTest;
use strict;
use warnings;
use base 'SG::TestBase';
BEGIN { use_ok('SG::Utils') };
<etc>
Run Code Online (Sandbox Code Playgroud)
如果我想用Build test或运行所有测试,一切仍然很好prove,但尝试运行单个测试不起作用:
drewfus:~/sandbox$ prove -lv SG::UtilsTest
Cannot determine source …Run Code Online (Sandbox Code Playgroud) 所以我有一个应用程序,如果我诚实并不真正需要事务完整性(许多更新,其中没有一个是关键的).因此,我计划暂时将实体组留在路边.但我仍然希望了解它(来自关系背景).
我看到它的方式,我的应用程序的所有查询将基于用户的用户.因此,根据文档建议,我不需要将任何高于用户实体的组分组.但我并没有计划拥有一个特定的用户实体,而是依赖于实体本身的UserProperty.
我看待它的方式,如果我想要事务(基于每个用户),我将需要某种root用户实体作为其数据层次结构的所有实体的父级,无论这个实体有多么薄实际上就是基本上没有属性.
它是否正确?
对于冗长的道歉,我只是真正地指出今晚在实践中实际上意味着什么模式......
我想编写一个函数,它接受一个文件名并在*nix平台上生成一个.pdf文件,在Windows平台上生成一个.wmf,文件名和宽度为6英寸4.
graph <- function(filename){
setwd("graphics")
ext <- ifelse(.Platform$OS.type == "unix", "pdf", "wmf")
name <- paste(filename, ext, sep=".")
ifelse(.Platform$OS.type == "unix", pdf(name, width=6, height=4), wmf(name, width=6, height=4))
}
Run Code Online (Sandbox Code Playgroud)
这是我的尝试,但我收到了这个错误
ans [test&!nas]中的错误< - rep(yes,length.out = length(ans))[test&:replacement的长度为零
有任何想法吗?我觉得我忽视了什么.