Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找不到插入finally块的位置以消除错误:插入finally以完成约会_Java_Debugging_Try Catch_Try Catch Finally - Fatal编程技术网

Java 找不到插入finally块的位置以消除错误:插入finally以完成约会

Java 找不到插入finally块的位置以消除错误:插入finally以完成约会,java,debugging,try-catch,try-catch-finally,Java,Debugging,Try Catch,Try Catch Finally,我尝试了几个点来插入finally块,但不管我怎么做,最终都会使代码变得更糟 这是我的代码,从第四个到最后一个结束的花括号就是给我错误的那个。有什么想法吗 包com.tunestore.action 导入java.io.InputStream; 导入java.sql.Connection; 导入java.sql.DriverManager; 导入java.sql.ResultSet; 导入java.sql.PreparedStatement; 导入javax.servlet.http.Http

我尝试了几个点来插入finally块,但不管我怎么做,最终都会使代码变得更糟

这是我的代码,从第四个到最后一个结束的花括号就是给我错误的那个。有什么想法吗


包com.tunestore.action

导入java.io.InputStream; 导入java.sql.Connection; 导入java.sql.DriverManager; 导入java.sql.ResultSet; 导入java.sql.PreparedStatement; 导入javax.servlet.http.HttpServletRequest; 导入javax.servlet.http.HttpServletResponse; 导入org.apache.commons.logging.Log; 导入org.apache.commons.logging.LogFactory; 导入org.apache.struts.action.action; 导入org.apache.struts.action.ActionForm; 导入org.apache.struts.action.ActionForward; 导入org.apache.struts.action.ActionMapping; 导入org.apache.struts.action.ActionMessage; 导入org.apache.struts.action.ActionMessages; 导入org.apache.struts.action.DynaActionForm; 导入java.io.*; 导入javax.servlet.*; 导入javax.servlet.http.*; 导入org.owasp.validator.html.*; 导入org.owasp.esapi.*; 公共类DownloadAction扩展了操作 { 私有静态最终日志Log=LogFactory.getLog(DownloadAction.class); 公共静态字符串DB_URL; 静止的 { if(System.getProperty(“tunestore.db.location”)!=null) { DB_URL=“jdbc:derby://localhost:1527/“+System.getProperty(“tunestore.db.location”); } 其他的 { DB_URL=“jdbc:derby://localhost:1527/“+System.getProperty(“user.home”)+“/.tunestore”; } setProperty(“jdbc.tunestore.url”,DB_url); } 公共静态连接getConnection()引发异常 { log.info(“在“+DB_URL”打开数据库); Class.forName(“org.apache.derby.jdbc.ClientDriver”).newInstance(); Connection conn=DriverManager.getConnection(DB_URL); 返回连接; } 公共ActionForward执行(ActionMapping映射、ActionForm表单、HttpServletRequest请求、HttpServletResponse响应) 抛出异常 { DynaActionForm daf=(DynaActionForm)表格; 字符串用户=(字符串)请求.getSession(true).getAttribute(“用户名”); 如果(用户!=null) { 连接conn=null; 尝试 { conn=DownloadAction.getConnection(); String sql2=“从CD中选择ID,其中CD.BITS=?”; PreparedStatement stmt2=conn.prepareStatement(sql2); stmt2.setString(1,request.getParameter(“cd”); ResultSet rs2=stmt2.executeQuery(); rs2.next(); String sql=“选择计数(*)” +“来自TUNEUSER_CD” +“其中TUNEUSER_CD.TUNEUSER=?和TUNEUSER_CD.CD=?”; PreparedStatement stmt=conn.prepareStatement(sql); stmt.setString(1,用户); stmt.setInt(2,rs2.getInt(1)); ResultSet rs=stmt.executeQuery(); rs.next(); 拥有的整数=rs.getInt(1); 如果(拥有==1) { 尝试 { //试着先打开那条小溪——如果有什么差错,它就在这里 InputStream=this.getServlet().getServletContext().getResourceAsStream(“/WEB-INF/bits/”+request.getParameter(“cd”); 如果(is!=null) { setContentType(“音频/mpeg”); response.setHeader(“内容处置”、“附件;文件名=“+daf.getString(“cd”)”); 字节[]buff=新字节[4096]; int=0; 而((bread=is.read(buff))>=0) { response.getOutputStream().write(buff,0,bread); } } 其他的 { ActionMessages errors=getErrors(请求); 添加(ActionMessages.GLOBAL_消息,新的ActionMessage(“download.error”); 保存错误(请求、错误); 返回mapping.findForward(“错误”); } } 捕获(例外e) { e、 printStackTrace(); ActionMessages errors=getErrors(请求); 添加(ActionMessages.GLOBAL_消息,新的ActionMessage(“download.error”); 保存错误(请求、错误); 返回mapping.findForward(“错误”); } 返回null; } } } } }
该括号是外部
try
块结束的位置。它没有
catch
块,也没有
finally
块,因此您会得到一个错误。只需在括号后立即添加一个或另一个括号,或者删除不需要的
try

该括号是外部
try
块结束的位置。它没有
catch
块,也没有
finally
块,因此您会得到一个错误。只需在括号后添加一个或另一个,或

    package com.tunestore.action;

import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.action.DynaActionForm; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import org.owasp.validator.html.*; import org.owasp.esapi.*; public class DownloadAction extends Action { private static final Log log = LogFactory.getLog(DownloadAction.class); public static String DB_URL; static { if (System.getProperty("tunestore.db.location") != null) { DB_URL = "jdbc:derby://localhost:1527/" + System.getProperty("tunestore.db.location"); } else { DB_URL = "jdbc:derby://localhost:1527/" + System.getProperty("user.home") + "/.tunestore"; } System.setProperty("jdbc.tunestore.url", DB_URL); } public static Connection getConnection() throws Exception { log.info("Opening database at " + DB_URL); Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); Connection conn = DriverManager.getConnection(DB_URL); return conn; } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DynaActionForm daf = (DynaActionForm)form; String user = (String)request.getSession(true).getAttribute("USERNAME"); if(user != null) { Connection conn = null; try { conn = DownloadAction.getConnection(); String sql2 = "SELECT ID FROM CD WHERE CD.BITS = ?"; PreparedStatement stmt2 = conn.prepareStatement(sql2); stmt2.setString(1, request.getParameter("cd")); ResultSet rs2 = stmt2.executeQuery(); rs2.next(); String sql = "SELECT COUNT(*) " + "FROM TUNEUSER_CD " + "WHERE TUNEUSER_CD.TUNEUSER = ? AND TUNEUSER_CD.CD = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, user); stmt.setInt(2, rs2.getInt(1)); ResultSet rs = stmt.executeQuery(); rs.next(); int owned = rs.getInt(1); if(owned == 1) { try { // Try to open the stream first - if there's a goof, it'll be here InputStream is = this.getServlet().getServletContext().getResourceAsStream("/WEB-INF/bits/" + request.getParameter("cd")); if (is != null) { response.setContentType("audio/mpeg"); response.setHeader("Content-disposition", "attachment; filename=" + daf.getString("cd")); byte[] buff = new byte[4096]; int bread = 0; while ((bread = is.read(buff)) >= 0) { response.getOutputStream().write(buff, 0, bread); } } else { ActionMessages errors = getErrors(request); errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("download.error")); saveErrors(request, errors); return mapping.findForward("error"); } } catch (Exception e) { e.printStackTrace(); ActionMessages errors = getErrors(request); errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("download.error")); saveErrors(request, errors); return mapping.findForward("error"); } return null; } } } } }