zoukankan      html  css  js  c++  java
  • Java中的异常注意点

    在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的存在的特殊情况(不推荐此中方法写代码):

     1 public static void main(String[] args) throws Exception {
     2         
     3         try {
     4             Say();
     5         } catch (Exception e) {
     6             e.printStackTrace();
     7         }
     8         finally{
     9             System.out.println("finally over");
    10         }
    11         
    12     }
    13     
    14      static void Say() throws Exception{
    15         try {
    16             int num = 2/0;
    17         } catch (Exception e) {
    18             //System.out.println("报错了");
    19             //System.out.println(e);
    20              throw new Exception("报错了2");//此处只是将异常封存在了内存中并没有输出错误信息。
    21         }finally{
    22             System.out.println("结束了");
    23             //return;    //此处的return语句会跳出当前try-catch块  结束本方法且不会抛出异常(直接将此catch中的异常吞掉!)。
    24         }
    25     }

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

    结论:不要再finally中试图return一个值,这样可能会导致一些意想不到的逻辑错误,finally就是用来释放资源的!

  • 相关阅读:
    Maven pom.xml中添加指定的中央仓库
    命令行远程链接MySQL
    A required class was missing while executing org.apache.maven.plugins:maven-war-plugin:2.1.1:war
    mvn deploy命令上传包
    保存好你的密码
    PuTTY免输密码自动登录Linux
    ActiveMQ无法启动
    linux控制台批量杀进程
    dubbo入门之微服务客户端服务端配置
    dubbo入门之helloWorld
  • 原文地址:https://www.cnblogs.com/john69-/p/5437762.html
Copyright © 2011-2022 走看看