【透彻理解异常并合理使用异常】

回顾异常处理机制:

  异常机制使程序中异常处理代码和正常业务代码分离,也就是把某些异常交给异常处理器去处理,不让JVM直接处理。

  JMV的处理方式时打印异常跟踪栈的信息,并终止程序运行,比如:

  [java]

  public static void main(String[] args) {

  System.out.println(1 / 0); // 程序抛出java.lang.ArithmeticException: / by zero 然后程序结束。

  ... // 下面的代码无法得到执行。

  }

  public static void main(String[] args) {

  System.out.println(1 / 0); // 程序抛出java.lang.ArithmeticException: / by zero 然后程序结束。

  ... // 下面的代码无法得到执行。

  }

  于是乎,我来捕捉一下这个异常好了:

  [java]

  public static void main(String[] args) {

  try {

  System.out.println(1 / 0); // 如果捕捉到异常,生成对应的异常类的对象

  }catch(ArithmeticException ae) { // 如果捕捉到异常对象,进行自定义异常处理

  ae.printStackTrace(); // 简单的异常处理,打印异常的跟踪栈信息

  }

  System.out.println("main方法结束"); // 这就是异常处理代码和正常业务代码分离的好处,逻辑上清晰,并且单独处理被捕获的异常。

  }

  public static void main(String[] args) {

  try {

  System.out.println(1 / 0); // 如果捕捉到异常,生成对应的异常类的对象

  }catch(ArithmeticException ae) { // 如果捕捉到异常对象,进行自定义异常处理

  ae.printStackTrace(); // 简单的异常处理,打印异常的跟踪栈信息

  }

  System.out.println("main方法结束"); // 这就是异常处理代码和正常业务代码分离的好处,逻辑上清晰,并且单独处理被捕获的异常。

  }

  问,上面的异常需要被捕捉吗?算术异常.

  如果按照平常思维来思考,程序运行时有异常退出就行了。还捕捉啥呢?还干嘛分为checked异常跟runtime异常呢?

  1:捕捉异常是为了让程序单独处理被捕获的异常。

  2:区分checked异常跟runtime异常,是为了增强程序健壮性。

  checked(知道编译时可能会有问题,我能处理,或者你来处理,最后必须处理(抛向JVM)),编译时就必须给我说清楚怎么处理。

  runtime(知道运行时可能会有问题,我愿意处理就处理,你爱处理不处理),运行期出了错你负责。

  无论是哪种异常,都不一定100%发生异常,100%发生异常的代码?你会写吗?你会写编译器让你写吗?

转载于:https://www.cnblogs.com/qq1287527359/p/3309933.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值