您的位置:首页 > 编程语言 > Java开发

Java中的异常注意点

2016-04-27 10:01 435 查看
在java中 使用throw关键字抛出异常 使用throws关键字声明异常

public static void main(String[] args) throws Exception{try {
//将一个类的全限定名字符串转换成内存中该类对应的字节码文件
//Sql Server 连接方式1
//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//MySql  连接方式2
//Class.forName("com.mysql.jdbc.Driver");
//Oracle   连接方式3
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new Exception("相关异常");
}


throw关键字是将异常在自己方法中解决 throws关键字是将异常声明出来,让其调用方去解决,如果其调用方是main方法,

其同样使用throws声明异常,那么此异常将会交给java虚拟内部解决。

子类方法不能比父类抛出更多的异常

例如:父类A中的方法Run()没有异常抛出,

  那么在类B中重写A类中的Run()方法时就必须要使用try-catch进行环绕解决编译报红,而不能够使用throws将异常声明出去。

捕获异常的过程中需要注意的事情:重点: 无论何时finally块代码都会执行,除非一种情况下:

                  在try或是catch块中出现了System.exit(0) 这一代码

注意在捕获异常的过程中如果有了return的存在的特殊情况(不推荐此中方法写代码):

public static void main(String[] args) throws Exception {

try {
Say();
} catch (Exception e) {
e.printStackTrace();
}
finally{
System.out.println("finally over");
}

}

static void Say() throws Exception{
try {
int num = 2/0;
} catch (Exception e) {
//System.out.println("报错了");
//System.out.println(e);
throw new Exception("报错了2");//此处只是将异常封存在了内存中并没有输出错误信息。
}finally{
System.out.println("结束了");
//return;    //此处的return语句会跳出当前try-catch块  结束本方法且不会抛出异常(直接将此catch中的异常吞掉!)。
}
}


Say() 的finally中return一个值,等同于告诉编译器该方法没有异常,但实际上异常是有的,这样的结果是该方法的调用者却捕获不到异常,相对于异常被无端的被吃掉了.

结论:不要再finally中试图return一个值,这样可能会导致一些意想不到的逻辑错误,finally就是用来释放资源的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: