我们来看看这两个例子.
第一:
try {
execute(testObj);
} catch(Exception e) {
//do somethingwith that
}
public void execute(TestObj testObj) throws Exception {
if (testObj == null){
throw new Exception("No such object");
}
//do something with object
}
Run Code Online (Sandbox Code Playgroud)
第二:
if (testObj != null){
execute(testObj);
} else {
//handle this differently
}
public void execute(TestObj testObj) {
//do something with object
}
Run Code Online (Sandbox Code Playgroud)
如果我们需要检查"is null"或其他任何东西,现在不是重点.我想知道哪种做法总体上更好 - " 检查,然后做 "或" 做,然后处理异常,如果发生 "?
我有:
class Parent {}
class Child1 extends Parent{}
class Child2 extends Parent{}
我在我的应用程序中到处使用所有三个类(尤其是子类).现在决定应该删除子类,而父类需要从两个子类中保存字段(和方法).我怎样才能轻松获得所需的结果?
我想到的只是将所有子数据移动到Parent类,然后Ctrl+Shift+R
替换所有出现的旧类.我仍然想知道,有没有更好的方法来实现这一目标?
问题与此处描述的相同
但既然那里没有找到解决方案,想在这里重新打开这个话题吗?简而言之,我使用的是 Apache POI 3.8。我有一个带有宏的*.xlsm文件。我试图在部署应用程序时打开此文件,但在“ XSSFWorkbook ”构造函数中出现错误,该错误表明“ ZIP 条目大小太大”。奇怪的是,我能够在我的 IDEA 中本地执行该操作而没有任何问题。如果有人愿意分享正在发生的事情的想法,如果过去有这样的问题,我们将不胜感激。
默认情况下发生的情况是抛出异常,但没有处理程序正在侦听它。结果,此类请求到达 JAR-RS 方法,但提交的字段 thad 的值“不正确”,设置为 NULL。
我在 JAVADOC 中读到,必须设置一个处理程序,以便在发生这种情况时我可以做一些事情。但我找不到有关如何设置此类处理程序的信息。
我的端点是这样的:
@Path("/path")
public class MyResource {
@POST
@Path("something")
public Response postSomething(JaxbAnnotatedRequest request) {
//processing....
}
}
Run Code Online (Sandbox Code Playgroud) 我的意思是,我读到一个编写方法的好方法是遵循规则:一个方法应该只做一个任务.如果我有不同的顺序操作,那么我需要将方法分成几个.它应该使代码更简洁,自我解释的方法名称.但是如果我想实现应该做某事的方法然后返回布尔值 - true表示成功,如果失败则表示false.例如,假设我们有一个名为setObjectValue()的setter.[再次,它只是一个例子].
问题:使用此名称并返回布尔值是否合适,或者它应该是:isSuccessfullsetObjectValue(),setObjectValueAndCheckIsOk(),还是应该有两种方法或什么?因为名称"setObjectValue()"不会告诉您该方法除了设置值之外还在执行某些操作.
对我个人来说(这并不意味着我是对的),包括try-catch语句在方法'重载'他们的内部结构为读者.使用DB时,您应该包括SQLExceptions,ConnectionExceptions等等.有没有办法将所有例外的责任放在某个对象上?
我想是这样的:
enum TaskEnum {
doSmth1, doSmth2, doSmth3, doSmth4
}
class OuterClass {
doWhatever(TaskEnum task, String… args) {
try {
switch(task) {
case (doSmth1): InnerClassInstance.execute1(args); break;
case (doSmth2): InnerClassInstance.execute2(args);break;
case (doSmth3): InnerClassInstance.execute3(args);break;
case (doSmth4): InnerClassInstance.execute4(args);break;
} catch(Exception e) {
e.printStack()}
}
}
}
class InnerClass {
execute1(String args) throws Exception() {bla-bla-bla};
execute2(String args)throws Exception() { bla-bla-bla };
execute3(String args)throws Exception() { bla-bla-bla };
execute4(String args)throws Exception() { bla-bla-bla };
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,外部类将负责所有内部类方法抛出的异常.当然,如果认为我的解决方案是好的,我不会问这个问题.这只是一个例子,让你理解这个想法.
请分享您对此的看法.
当这样的宣言方式
java.util.ArrayList example = new java.util.ArrayList();
Run Code Online (Sandbox Code Playgroud)
优于
import java.util.ArrayList;
Run Code Online (Sandbox Code Playgroud)
?
class Foo(){
String name;
public Foo(String name){
//code to be inserted
}
public void setName(String name){
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
插入缺失行更好的原因是什么:
1.) this.name = name;
2.) setName(name);
是否HashSet
的containsAll()
检查元素之前使集合大小的比较呢?
java ×9
apache ×1
apache-poi ×1
constructor ×1
declaration ×1
excel ×1
exception ×1
import ×1
jax-rs ×1
jaxb ×1
merge ×1
methods ×1
setter ×1
try-catch ×1
validation ×1
zip ×1