Java Exception

原创 2016年08月30日 09:18:05

异常种类:

Checked Exception:因为用户的原因导致的异常,程序员需要处理
Error:因为系统的原因导致的异常,程序员不需要处理
Runtime Exception:因为程序员的逻辑问题导致的异常,需要处理

异常体系

Throwable
  |-- Error
  |-- Exception
       |-- RuntimeException
       |-- CheckedException

try-catch-finally

try必须加catch或者finally中的一个
try-with-resource其实就是try-finally,一个语法糖而已

常见的面试题

return
throw
出现再try catch finally中的情况

  1. 当return出现在try中,并且被执行了(如果return之前发生了异常就是没有被执行)
    eg.
     public static int testException() {
        int b = 0;
        try {
            b = 1;
            return b;
        } catch (ArithmeticException e) {
            System.out.println(b);
        } finally {
            System.out.println(b);
            b=2;
        }
        return 0;    
    }

调用:

     System.out.println(testException());

输出:

    1
    1

也就是说,return不影响finally的执行,return的执行过程是:计算return后面的表达式的值,然后压入一个返回栈中,接着去执行finally代码块finally中更改b这个变量并不会影响返回栈中的值。但是如果finally中有return语句的话,之前的返回值就会被抛弃。(相当于又往返回栈中压入了一个新的数据,所以栈顶变了)
eg.

     public static int testException() {
        int b = 0;
        try {
            b = 1;
            return b;
        } catch (ArithmeticException e) {
            System.out.println(b);
        } finally {
            System.out.println(b);
            b=2;
            return b;
        }  
    }

调用:

    System.out.println(testException());

输出为:

        1
        2

当return出现在catch代码块中和出现在try中的分析过程是一样的,当catch中的return被执行就会先计算return之后表达式的值,然后压入返回栈中,finally中更改return返回的变量的值是不会影响返回栈顶的值的,但是如果在finally中有return语句,那么就是向返回栈中压入了新的数据。

  1. 当throw同时出现在try和finally中,并被执行
    eg.
    public static void testException() throws Exception {
        try {
            throw new Exception("exceptionA");
        }finally {
            throw new Exception("exceptionB");
        }
    }

此时try中的异常被抑制掉了,也就是被抛弃了,对外只有finally中的异常被抛出

版权声明:本文为博主原创文章,未经博主允许不得转载。

每天一点儿java---继承exception类来实现自己的异常类

继承exception类来实现自己的异常类
  • christprince007
  • christprince007
  • 2014年09月28日 10:24
  • 2608

Eclipse之Add Java Exception BreakPoint

用了那么久Eclipse,却一直没有用到过 Add Java Exception BreakPoint (Run菜单下)这种加断点的方式,遗憾啊。今天同时帮着调试Bug时用,感觉在调试项目中集成的第三...
  • CharlesYY
  • CharlesYY
  • 2007年02月02日 17:28
  • 6946

Java自定义Exception设计

         本文讨论有关异常设计的问题,关注何时和怎么更好的使用异常类,设计符合自己系统的自己定义异常类。这里假设读者已经对java已经一定的了解,知道什么是java的异常,及其工作原理。读者想...
  • jasph77
  • jasph77
  • 2008年03月27日 16:00
  • 17347

【Java】【Exception】Java Error And Exception

1.Java Error and Exception http://developer.51cto.com/art/201111/304649.htm 注:转载
  • lotusve
  • lotusve
  • 2015年03月24日 10:04
  • 165

【系列】重新认识Java语言——异常(Exception)

异常,是Java中非常常用的功能,它可以简化代码,并且增强代码的安全性。本文将介绍一些异常高级知识,也是学习Java一来的一次总结。包括以下内内容: 异常的基础知识 异常特点 异常误用 如何正确地使用...
  • xialei199023
  • xialei199023
  • 2017年03月18日 10:20
  • 1527

kettle A Java Exception has occurred

kettle启动spoon提示 A Java Exception has occurred 根本原因kettle对应的jdk版本不正确,window下查看: java  -version ...
  • jc_benben
  • jc_benben
  • 2017年06月30日 08:55
  • 2332

Java Exception: MISSING EXCEPTION

JAVA的异常处理机制中,按大家正常理解,程序中的异常要么Catch进行处理,要么Throws抛出交给调用程序处理。除这两种Case之外,其实JAVA的异常处理机制中还存在异常丢失的情况,也就是说,异...
  • chinaoryx
  • chinaoryx
  • 2007年10月08日 21:37
  • 239

Java中常见的Exception种类

Java中常见的Exception种类 1、ClassNotFoundException 2、IOException 3、NoSuchFieldException ...
  • you23hai45
  • you23hai45
  • 2014年07月16日 00:03
  • 2140

Java Exception Handling -java异常处理

Java  Exception Handling -java异常处理 java中的异常 异常是程序在编译时或者运行时出现的意想不到的场景,比如在书写java代码时候不遵守java语法规则会导致编译...
  • doctor_who2004
  • doctor_who2004
  • 2016年09月29日 00:02
  • 1008

MATLAB生成COM发生java exception occured异常

背景:项目中需要使用到MATLAB中的自定义函数,即.m文件。但是在按照帮助的步骤进行生成COM的操作时,总是提示“java exception occured”异常。MATLAB版本为7.1 sp3...
  • chengx919
  • chengx919
  • 2010年12月06日 16:37
  • 1849
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Exception
举报原因:
原因补充:

(最多只允许输入30个字)