java记录3--异常

Posted 溪风吹雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java记录3--异常相关的知识,希望对你有一定的参考价值。

异常的分类

1.Error

由java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等等,JAVA程序无法对此错误

try
{
  //可能出现异常的代码块
}
catch(exception1 )
{
//产生异常1的处理措施
}
catch(exception 2)
{
//产生异常2的处理措施
}
。。。。
finally
{
//无论是否捕获异常都必须处理的代码
}

 

 

进行处理

2.RUNTIME EXCEPTION

java虚拟机在运行时产生的异常,如0做分母,数组下标越界,其产生比较频繁,处理麻烦,对程序可读性和运行效率影响太大,因此由系统检测

用户可不做处理

3.EXCEPTION

一般程序中可预知的问题,其产生的影响可能会带来意想不到的结果

因此Java虚拟机要求java程序必须捕获或声明所有的非运行时异常

//捕获异常相关问题

try
{
    语句1;//一旦语句1出现异常,则语句2永远得不到执行
    语句2;
}

catch (exception1 e)
{......}

catch (exception e)
{......}

finally{....}//无论try中代码是否抛出异常
//finally中代码都会得到执行,通常在finally语句可以进行资源的清除工作

3.throw

3.1用来抛出异常     格式:throw new 异常名(参数);

3.2假设f方法抛出了A异常,则f方法由2种方式来处理A异常

throws A//谁调用f方法,谁处理A异常,本身不处理

try。。catch//自己处理

ps:要抛出的异常必须得是throwable的子类

4.throws

格式 void f()throws A

{。。。}

4.1 throws A表示调用f方法时f方法  可能  会抛出A类异常 , 建议  你调用f方法时最后对可能抛出的异常进行捕捉

4.2throws A不表示f方法一定会抛出A类异常,不表示调用f方法时,必

须对A异常进行捕捉

例如假设A是runtime exception子类异常,可以处理也可以不处理

class c extends Throwable
{
    public void f()
    {
        throw new RuntimeException();//不报错
    }
}
public class A
{
    public static void main(String [] args)
    {
        
    }
}

ps:1.所有的catch最多只能有一个被执行,也可能所有的catch都没有被执行

2.先catch子类异常再catch父类异常,如果相反则编译时会报错

3.重写方法抛出异常的范围不能大于被重写方法排除的异常范围

//自定义异常A
class A extends Excepion
{
}

//自定义异常B
class B extends Exception
{
}

//自定义异常C
class C extends Exception
{
}

class M
{
    void f() throws A, B
    {
    }
}

class N extends M
{
    void f() throws A,B //可以throws A或B,也可以throws A,B  
也可以不throws,但不可以throws C
即"子类覆盖了父类方法时,子类方法抛出异常的范围不能大于父类方法抛出的异常范围"
{ } } class Test { public static void main(String[] args) {} }

 

以上是关于java记录3--异常的主要内容,如果未能解决你的问题,请参考以下文章

java 反射代码片段

片段中的 EditText 上的空指针异常 [重复]

java.lang.IllegalStateException:键 f1 的片段不再存在:索引 3

全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段

Java异常处理机制

错误记录Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. | Android Studio 降级 )(代码片段