JSP代码 我不知道怎么放入try和catch

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP代码 我不知道怎么放入try和catch相关的知识,希望对你有一定的参考价值。

我试把try和catch代码中,可是总是出现错误,我是个新手。请详细把try和catch放入代码中,还可以解释为什么要这样放。谢谢先了。代码如下:(可以调试到正确答案会给分哦)
-----------------------------------------------------------------
<%@ page contentType="text/html; charset=gb2312" language="java"
import="java.sql.*" errorPage=""%>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=学生成绩数据库";
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
%>
<CENTER><h2 class="style3">出库信息</h2>
<br>
<form name="form1" method="post" action="chuku2.jsp">
<p><span class="style4">请选择要出库的产品的代号:</span>
<select name="id">
<%ResultSet rs=stmt.executeQuery("SELECT* FROM student");
while(rs.next())

String id=rs.getString("id");
%>
<option value="<%=id%>"><%=id%></option>
<%%>

</select>
</p>
<p>
<input type="submit" name="queding" value="确定">
 
<input name="back" type="button" id="back" value="返回"
onClick="javascript:history.go(-1)">
</p>
</form>
</center>
</body>
</html>

try
//代码区
catch(Exception e)
//异常处理

代码区如果有错误,就会返回所写异常的处理。

 

首先要清楚,如果没有try的话,出现异常会导致程序崩溃。
而try则可以保证程序的正常运行下去,例如:

try
    int i = 1/0;
catch(Exception e)
    

一个计算的话,如果除数为0,则会报错,如果没有try的话,程序直接崩溃。用try的话,则可以让程序运行下去,并且输出为什么出错!

try catch 是捕捉try部分的异常,当没有trycatch的时候,如果出现异常则程序报错,加上trycatch,出现异常程序正常运行,只是把错误信息存储到Exception里,所以catch是用来提取异常信息的,可以在Catch部分加上一句System.out.println(e.ToString());,如果出现异常可以把异常打印出来

try-catch-finally示例:
public class TestException

    public TestException()
    
    
    boolean testEx() throws Exception
    
        boolean ret = true;
        try
        
            ret = testEx1();
        
        catch (Exception e)
        
            System.out.println("testEx, catch exception");
            ret = false;
            throw e;
        
        finally
        
            System.out.println("testEx, finally; return value=" + ret);
            return ret;
        
    
    boolean testEx1() throws Exception
    
        boolean ret = true;
        try
        
            ret = testEx2();
            if (!ret)
            
                return false;
            
            System.out.println("testEx1, at the end of try");
            return ret;
        
        catch (Exception e)
        
            System.out.println("testEx1, catch exception");
            ret = false;
            throw e;
        
        finally
        
            System.out.println("testEx1, finally; return value=" + ret);
            return ret;
        
    
    boolean testEx2() throws Exception
    
        boolean ret = true;
        try
        
            int b = 12;
            int c;
            for (int i = 2; i >= -2; i--)
            
                c = b / i;
                System.out.println("i=" + i);
            
            return true;
        
        catch (Exception e)
        
            System.out.println("testEx2, catch exception");
            ret = false;
            throw e;
        
        finally
        
            System.out.println("testEx2, finally; return value=" + ret);
            return ret;
        
    
    public static void main(String[] args)
    
        TestException testException1 = new TestException();
        try
        
            testException1.testEx();
        
        catch (Exception e)
        
            e.printStackTrace();
        
    

输出结果:
i=2
i=1
testEx2, catch exception
testEx2, finally; return value=false
testEx1, finally; return value=false
testEx, finally; return value=false
参考技术A 原理:把HTML代码都剥除了,剩下的就是 Java代码了。 你需要注意的就是 上下文“”的匹配问题。因为在JSP上编写代码 是没有 IDE辅助的。 参考技术B 嗯 ...JSP里的脚本里能放try catch的.. 还有就是,JSP里面最好不要写太多业务逻辑,这些业务逻辑应该交给BO去做,然后让Servlet去调用BO得到结果,再拿给JSP展示...... 建议先学学MVC模式....... 参考技术C 写代码要养成良好好习惯,所以mvc还是要了解清楚的,jsp一般只做页面表示层,当然偶尔也可以写点脚本,控制层一般用servlet去完成,持久层jdbc,这是不用其它的框架的情况下,如果用框架又不同得看用什么框架了 参考技术D 没人会把try catch语句放在jsp里面的啊,这个需求本身就不合理的,你可以试试用javabean来做,jsp被访问时,调用bean的方法,将数据查询出来以List的形式返回给jsp页,jsp只是负责显示的,像你说的那种业务逻辑的代码不要写在jsp中,非常不安全,写成功了也没人敢用的,暴露了数据库种类,用户名和密码,太可怕了 呵呵,去看看MVC设计模式吧,jsp只负责显示结果(view) servlet负责控制(contrl) javabean负责实现业务逻辑(model)

try / catch和MFC TRY / CATCH有什么区别?

我正在重构一些遗留的C ++ MFC代码并且遇到了这个结构:

TRY
{
    // do some stuff
}
CATCH
{
    // do some other stuff
}
END_CATCH

对我来说,这似乎很不寻常,我试图了解使用TRY/CATCH有利于try/catch的好处是什么。

我看到TRY创建了AFX_EXCEPTION_LINK的一个实例,我不太明白这个的目的。我的谷歌搜索技巧失败了。

答案

MFC(及其exception processing宏)早于C ++ 98语言规范。在MFC中使用异常时,宏会尝试抽象掉常见的样板代码。由于设计决策,样板代码是必要的,MFC中的异常是动态分配的,需要手动处理。

使用C ++异常处理替换MFC异常处理宏所需的步骤记录在Exceptions: Converting from MFC Exception Macros下:

使用宏转换代码以使用C ++异常处理关键字

  1. 找到所有出现的MFC宏TRYCATCHAND_CATCHEND_CATCHTHROWTHROW_LAST
  2. 替换或删除以下所有出现的宏: TRY(用try代替) CATCH(用catch代替) AND_CATCH(用catch代替) END_CATCH(删除它) THROW(用throw代替) THROW_LAST(用throw代替)
  3. 修改宏参数,以便它们形成有效的异常声明。 例如,改变 CATCH(CException, e) catch(CException* e)
  4. 修改catch块中的代码,以便根据需要删除异常对象。有关更多信息,请参阅文章Exceptions: Catching and Deleting Exceptions

以下是使用MFC异常宏的异常处理代码示例。请注意,因为以下示例中的代码使用宏,所以会自动删除异常e

TRY
{
   // Do something to throw an exception.
   AfxThrowUserException();
}
CATCH(CException, e)
{
   if (m_bPassExceptionsUp)
      THROW_LAST();
   if (m_bReturnFromThisFunction)
      return;
   // Not necessary to delete the exception e.
}
END_CATCH

下一个示例中的代码使用C ++异常关键字,因此必须显式删除异常:

try
{
   // Do something to throw an exception.
   AfxThrowUserException();
}
catch(CException* e)
{
   if (m_bPassExceptionsUp)
      throw;
   if (m_bThrowDifferentException)
   {
      e->Delete();
      throw new CMyOtherException;
   }
   if (m_bReturnFromThisFunction)
   {
      e->Delete();
      return;
   }
   e->Delete();
}

转换几乎是机械的,只要您记得通过调用CException::Delete手动删除MFC异常。


1这与今天的C ++异常处理约定形成对比:按值抛出,按(const)引用捕获。

以上是关于JSP代码 我不知道怎么放入try和catch的主要内容,如果未能解决你的问题,请参考以下文章

Main 中的 Giant Try Catch 块

try / catch和MFC TRY / CATCH有什么区别?

如何在 PHP 中有效地使用 try...catch 块

多线程 Win32 C++ 程序在多个线程中使用 try/catch 崩溃

NSKeyedUnarchiver - 需要尝试/捕获?

从 catch 块访问 vuex 存储