public int front(){
if(queue.empty()){
while(!stack.empty()){
queue.push(stack.pop());
}
}
try{
return queue.peek();
}catch(Exception e){
System.out.println("Empty");
}
// What to do here?!!!
}
我正在使用2 queue
实施stacks
。这是一个返回queue
前面元素的函数,但queue
是empty
,exception
必须引发。return
。但try
块以外必须有con.connect()
声明,我感到困惑,不知道该怎么做
答案 0 :(得分:3)
这里做什么?
如果抛出异常不是一个选项,那么在空队列上调用front()
时你可以做的很少:这是一个编程错误,所以正确的做法是抛出{ {1}}表示。
IllegalStateException
从API设计的角度来看,所有其他选项都更糟糕:您可以保留try{
return queue.peek();
}catch(Exception e){
System.out.println("Empty");
throw new IllegalStateException("Empty");
}
// return statement is no longer required here
值,并在队列为空时返回它,或者您可以将返回类型更改为int
并且返回Integer
,或者您可以将返回类型更改为一对null
和int
,其中boolean
表示读取是否成功。但是,抛出未经检查的异常更合适,因为用户在询问其前端元素之前必须检查队列是否为空。
答案 1 :(得分:1)
我会抛出一个异常,就像
一样public int front(){
//..code
if(queue.isEmpty()) //or whatever the condition for exception is
throw new Exception(); //or whatever exception
else
return queue.peek(); //return value if exception does not occur
}
答案 2 :(得分:0)
您可以返回一个Integer类型对象并检入调用代码以查看返回值是否为null。这样,如果它为null,你可以假设它是空的。
你可以做的另一件事是让调用代码处理异常并让front()方法像这样抛出异常:
public int front() throws Exception {
if(queue.empty()){
while(!stack.empty()){
queue.push(stack.pop());
}
}
return queue.peek();
}
这意味着无论哪个方法调用front()都必须处理异常。
答案 3 :(得分:0)
您的评论不会做任何事情,但您会在var findTemplate = function(event) {
var target = $(event.target);
var templateName = target.val();
var template = $("#"+templateName);
var template = template.html();
var textarea = $(".texta");
textarea.html(template);
};
块中返回null
(确保您的调用方先检查catch
的返回值试图使用结果),或者你可以抛出异常。