肯定不会啦。
说一下try catch 和finally到底怎么回事!
try catch 成对出现的,一个try就一定要有catch,被try包裹的代码说明,如果这些代码中只要抛出异常的话,就会停止当前的代码运行,而跳到catch中,对于异常进行处理。
而finally呢,他是一个比较特殊的东西,finally中的代码无论出现说明状况都会运行到。即使出现异常。所以finally一般都是处理对资源的释放等 *** 作。
try{
go(); //假设在调用go方法的时候发生的异常
return “hello”; //这个return语句都是无法执行到的。
}catch(Exception e){
Systemoutprintln("发生的异常了!");
}finally{
Systemoutprintln("这里释放数据库连接!");
}
可以看到,当发生异常的时候,发生异常一下的代码都是无法执行到的。运行会跳到catch中,处理这个异常,之后进入finally中。
try{
go();
return “hello”; //这个return语句都是无法执行到的。
}catch(Exception e){
Systemoutprintln("发生的异常了!");
}finally{
Systemoutprintln("这里释放数据库连接!");
}
同样的代码,try中没有发生异常,所以catch中的代码是执行不到的,但是看到go方法下面的那个return了没,那么finally中的代码还会执行到吗?
答案是:能,一定会执行到。即使try中已经有了return。
你可以试一试!
现在稍稍明白了些吧!
不会影响数据
但是异常处理会稍微影响下程度性能,主要指速度上,可以忽略
但是你不try一下,你程序要是真出现了JSONException 异常就会宕掉
所有还是try下吧
首先执行
try{test();}
于是进入
try{
13 Systemoutprint("test ");
14 throw new RuntimeException();
15 }
16 catch(Exception ex){ Systemoutprint("exception ");}
17 }
于是输出test
然后throw new RuntimeException();就是抛出一个RuntimeException。。然后因为有catch 。。所以抛出的RuntimeException被catch了。。即到catch(Exception ex){ Systemoutprint("exception ");}
这了。。输出exception 。test方法结束这个方法里面抛出的异常他自己catch了。。没有抛出来。。所以 try{test();}没有抛异常。。所以执行 Systemoutprint("end ");输出end
所以就是这样了。。
至于ex 和e就是个名字而已。。
JDBC连接数据库
•创建一个以JDBC连接数据库的程序,包含7个步骤:
1、加载JDBC驱动程序:
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),
这通过javalangClass类的静态方法forName(String className)实现。
例如:
try{
//加载MySql的驱动类
ClassforName("commysqljdbcDriver") ;
}catch(ClassNotFoundException e){
Systemoutprintln("找不到驱动程序类 ,加载驱动失败!");
eprintStackTrace() ;
}
成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL
•连接URL定义了连接数据库时的协议、子协议、数据源标识。
•书写形式:协议:子协议:数据源标识
协议:在JDBC中总是以jdbc开始
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。
例如:(MySql的连接URL)
jdbc:mysql:
//localhost:3306/testuseUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。
3、创建数据库的连接
•要连接数据库,需要向javasqlDriverManager请求并获得Connection对象,
该对象就代表一个数据库的连接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和
密码来获得。
例如:
//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManagergetConnection(url , username , password ) ;
}catch(SQLException se){
Systemoutprintln("数据库连接失败!");
seprintStackTrace() ;
}
4、创建一个Statement
•要执行SQL语句,必须获得javasqlStatement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
具体的实现方式:
Statement stmt = concreateStatement() ;
PreparedStatement pstmt = conprepareStatement(sql) ;
CallableStatement cstmt =
conprepareCall("{CALL demoSp( , )}") ;
这段代码
1返回的值是5
,
2没有任何输出效果。
执行过程:
1首先执行main方法。调用静态函数getconn();
2定义变量conn
。初始值为8
3进入try
代码块。将conn的值改写成5过程中没有发生异常。跳过catch语句块。
4执行return语句,返回conn变量值,5。
5返回函数调用的地方,也就是主函数。
6运行结束。
代码要点解释:
使用try
catch
1无异常发生
包裹起来的代码块执行时与正常的语句块没有不同。
2发生异常
21try语句块中,从发生异常的哪行代码处断开,不再往下执行,跳转到catch语句块中
22程序会根据try中发生的异常的类型,选择最合适的catch语句块。按照catch的顺序向下选择,遇到适当的范围,就会进入catch块执行并跳出catch,注意catch语句可以有多个,但只执行一次。因此应当按照范围从小到大排列。
23try
catch语句执行完后会继续执行catch后面的语句,不会重新返回try中。
以上就是关于java的try catch语句问题全部的内容,包括:java的try catch语句问题、java 每写了一个json 都会叫我来try 一下@throws JSONException ,这样是什么原因会不会影响显示数据的、Java的try-catch等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)